C#.NET 加密解密:AES/DES/Base64/RSA/MD5/SHA256
2012-12-17 11:05
477 查看
using System; using System.Globalization; using System.IO; using System.Security.Cryptography; using System.Text; namespace Pub.Class { public static class EncryptExtensions { private static readonly byte[] AESKeys = {0x41, 0x72, 0x65, 0x79, 0x6F, 0x75, 0x6D, 0x79, 0x53, 0x6E, 0x6F, 0x77, 0x6D, 0x61, 0x6E, 0x3F}; private static readonly byte[] DESKeys = {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF}; public static string AESEncode(this string encryptString, string encryptKey) { encryptKey = encryptKey.SubString(32, ""); encryptKey = encryptKey.PadRight(32, ' '); var rijndaelProvider = new RijndaelManaged(); rijndaelProvider.Key = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 32)); rijndaelProvider.IV = AESKeys; ICryptoTransform rijndaelEncrypt = rijndaelProvider.CreateEncryptor(); byte[] inputData = Encoding.UTF8.GetBytes(encryptString); byte[] encryptedData = rijndaelEncrypt.TransformFinalBlock(inputData, 0, inputData.Length); return Convert.ToBase64String(encryptedData); } public static string AESDecode(this string decryptString, string decryptKey) { try { decryptKey = decryptKey.SubString(32, ""); decryptKey = decryptKey.PadRight(32, ' '); var rijndaelProvider = new RijndaelManaged(); rijndaelProvider.Key = Encoding.UTF8.GetBytes(decryptKey); rijndaelProvider.IV = AESKeys; ICryptoTransform rijndaelDecrypt = rijndaelProvider.CreateDecryptor(); byte[] inputData = Convert.FromBase64String(decryptString); byte[] decryptedData = rijndaelDecrypt.TransformFinalBlock(inputData, 0, inputData.Length); return Encoding.UTF8.GetString(decryptedData); } catch { return string.Empty; } } public static string DESEncode(this string encryptString, string encryptKey) { encryptKey = encryptKey.SubString(8, ""); encryptKey = encryptKey.PadRight(8, ' '); byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8)); byte[] rgbIV = DESKeys; byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString); var dCSP = new DESCryptoServiceProvider(); var mStream = new MemoryStream(); var cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write); cStream.Write(inputByteArray, 0, inputByteArray.Length); cStream.FlushFinalBlock(); return Convert.ToBase64String(mStream.ToArray()); } public static string DESDecode(this string decryptString, string decryptKey) { try { decryptKey = decryptKey.SubString(8, ""); decryptKey = decryptKey.PadRight(8, ' '); byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey); byte[] rgbIV = DESKeys; byte[] inputByteArray = Convert.FromBase64String(decryptString); var DCSP = new DESCryptoServiceProvider(); var mStream = new MemoryStream(); var cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write); cStream.Write(inputByteArray, 0, inputByteArray.Length); cStream.FlushFinalBlock(); return Encoding.UTF8.GetString(mStream.ToArray()); } catch { return string.Empty; } } public static string Base64Encode(this string encryptString) { byte[] encbuff = Encoding.UTF8.GetBytes(encryptString); return Convert.ToBase64String(encbuff); } public static string Base64Decode(this string decryptString) { byte[] decbuff = Convert.FromBase64String(decryptString); return Encoding.UTF8.GetString(decbuff); } public static string RSADecrypt(this string s, string key) { string result = null; if (string.IsNullOrEmpty(s)) throw new ArgumentException("An empty string value cannot be encrypted."); if (string.IsNullOrEmpty(key)) throw new ArgumentException("Cannot decrypt using an empty key. Please supply a decryption key."); var cspp = new CspParameters(); cspp.KeyContainerName = key; var rsa = new RSACryptoServiceProvider(cspp); rsa.PersistKeyInCsp = true; string[] decryptArray = s.Split(new[] {"-"}, StringSplitOptions.None); byte[] decryptByteArray = Array.ConvertAll(decryptArray, (a => Convert.ToByte(byte.Parse(a, NumberStyles.HexNumber)))); byte[] bytes = rsa.Decrypt(decryptByteArray, true); result = Encoding.UTF8.GetString(bytes); return result; } public static string RSAEncrypt(this string s, string key) { if (string.IsNullOrEmpty(s)) throw new ArgumentException("An empty string value cannot be encrypted."); if (string.IsNullOrEmpty(key)) throw new ArgumentException("Cannot encrypt using an empty key. Please supply an encryption key."); var cspp = new CspParameters(); cspp.KeyContainerName = key; var rsa = new RSACryptoServiceProvider(cspp); rsa.PersistKeyInCsp = true; byte[] bytes = rsa.Encrypt(Encoding.UTF8.GetBytes(s), true); return BitConverter.ToString(bytes); } public static string MD5(this string str) { string cl1 = str; string pwd = ""; MD5 md5 = System.Security.Cryptography.MD5.Create(); // 加密后是一个字节类型的数组 byte[] s = md5.ComputeHash(Encoding.Unicode.GetBytes(cl1)); for (int i = 0; i < s.Length; i++) { // 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得 pwd = pwd + s[i].ToString("x"); // 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符 } return pwd; } public static string MD5CSP(this string encypStr) { string retStr; var m5 = new MD5CryptoServiceProvider(); //创建md5对象 byte[] inputBye; byte[] outputBye; //使用GB2312编码方式把字符串转化为字节数组. inputBye = Encoding.GetEncoding("GB2312").GetBytes(encypStr); outputBye = m5.ComputeHash(inputBye); retStr = BitConverter.ToString(outputBye); retStr = retStr.Replace("-", "").ToLower(); return retStr; } public static string SHA256(this string str) { byte[] SHA256Data = Encoding.UTF8.GetBytes(str); var Sha256 = new SHA256Managed(); byte[] Result = Sha256.ComputeHash(SHA256Data); return Convert.ToBase64String(Result); //返回长度为44字节的字符串 } } }
相关文章推荐
- C#.NET 加密解密:AES/DES/Base64/RSA/MD5/SHA256
- C#.NET 加密解密:AES/DES/Base64/RSA/MD5/SHA256 .
- C#.NET 加密解密:AES/DES/Base64/RSA/MD5/SHA256
- Visual Studio 2017中使用正则修改部分内容 如何使用ILAsm与ILDasm修改.Net exe(dll)文件 C#学习-图解教程(1):格式化数字字符串 小程序开发之图片转Base64(C#、.Net) jquery遍历table为每一个单元格取值及赋值 。net加密解密相关方法 .net关于坐标之间一些简单操作
- 银联手机支付(.Net Csharp),3DES加密解密,RSA加密解密,RSA私钥加密公钥解密,.Net RSA 3DES C#
- ASP.NET C# URL加密解密
- ASP.NET C# URL加密解密
- ASP.NET C# URL加密解密
- C# 文件加密解密 SHA256
- 【转】asp.net(c#)加密解密算法之sha1、md5、des、aes实现源码详解
- ASP.NET C# URL加密解密
- C#.NET 加密解密:AES/DES/Base64/RSA/MD5/SHA256
- URL加密解密 (asp.net C#)
- 银联手机支付(.Net Csharp),3DES加密解密,RSA加密解密,RSA私钥加密公钥解密,.Net RSA 3DES C#
- 【VB.Net】使用SHA256进行简单的XOR文本加密与解密
- NET下对二进制文件进行加密解密(C#)
- C#加密解密(DES,AES,Base64,md5,SHA256,RSA,RC4)
- Asp.Net C#中除了MD5加密之外还经常用到了AES加密、解密与DES加密、解密,本次先介绍DES的加密及解密。注意的是DES的密匙是8位的。
- C#.NET 加密解密:AES/DES/Base64/RSA/MD5/SHA256
- c# RSA 加密解密 java.net公钥私钥转换 要解密的模块大于128字节