For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
AES(The Advanced Encryption Standard)是美国国家标准与技术研究所用于加密电子数据的规范、它被预期能成为人们公认的加密包括金融、电信和政府数字信息的方法、AES是一个新的可以用于保护电子数据的加密算法
明确地说、AES是一个迭代的、对称密钥分组的密码、它可以使用128、192 和 256 位密钥、并且用 128 位(16字节)分组加密和解密数据、与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据、通过分组密码返回的加密数据的位数与输入数据相同、以下是我经过整理的代码、希望对大家有所帮助
完整的Class代码
///
/// ASE加解密
///
public class AESHelper
{
///
/// 获取密钥
///
private static string Key
{
get
{
return "abcdef1234567890"; ////必须是16位
}
}
//默认密钥向量
private static byte[] _key1 = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF, 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
///
/// AES加密算法
///
/// 明文字符串
/// 将加密后的密文转换为Base64编码,以便显示
public static string AESEncrypt(string plainText)
{
//分组加密算法
SymmetricAlgorithm des = Rijndael.Create();
byte[] inputByteArray = Encoding.UTF8.GetBytes(plainText);//得到需要加密的字节数组
//设置密钥及密钥向量
des.Key = Encoding.UTF8.GetBytes(Key);
des.IV = _key1;
byte[] cipherBytes = null;
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
{
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
cipherBytes = ms.ToArray();//得到加密后的字节数组
cs.Close();
ms.Close();
}
}
return Convert.ToBase64String(cipherBytes);
}
///
/// AES解密
///
/// 密文字符串
/// 返回解密后的明文字符串
public static string AESDecrypt(string showText)
{
byte[] cipherText = Convert.FromBase64String(showText);
SymmetricAlgorithm des = Rijndael.Create();
des.Key = Encoding.UTF8.GetBytes(Key);
des.IV = _key1;
byte[] decryptBytes = new byte[cipherText.Length];
using (MemoryStream ms = new MemoryStream(cipherText))
{
using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Read))
{
cs.Read(decryptBytes, 0, decryptBytes.Length);
cs.Close();
ms.Close();
}
}
return Encoding.UTF8.GetString(decryptBytes).Replace("", ""); ///将字符串后尾的´´去掉
}
}
上面的代码可以直接复制到项目中使用、但是一定要修改私钥和向量的值、改为自己项目独有的就可以了