AES简介
AES(TheAdvancedEncryptionStandard)是美国国家标准与技术研究所用于加密电子数据的规范。它被预期能成为人们公认的加密包括金融、电信和政府数字信息的方法。
AES是一个新的可以用于保护电子数据的加密算法。明确地说,AES是一个迭代的、对称密钥分组的密码,它可以使用128、192和256位密钥,并且用128位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入数据相同。以下是我经过整理的代码,希望对大家有所帮助:
代码如下:
///<summary>
///ASE加解密
///</summary>
publicclassAESHelper
{
///<summary>
///获取密钥
///</summary>
privatestaticstringKey
{
get
{
return”abcdef1234567890″; ////必须是16位
}
}
//默认密钥向量
privatestaticbyte[]_key1={0x12,0x34,0x56,0x78,0x90,0xAB,0xCD,0xEF,0x12,0x34,0x56,0x78,0x90,0xAB,0xCD,0xEF};
///<summary>
///AES加密算法
///</summary>
///<paramname=”plainText”>明文字符串</param>
///<returns>将加密后的密文转换为Base64编码,以便显示</returns>
publicstaticstringAESEncrypt(stringplainText)
{
//分组加密算法
SymmetricAlgorithmdes=Rijndael.Create();
byte[]inputByteArray=Encoding.UTF8.GetBytes(plainText);//得到需要加密的字节数组
//设置密钥及密钥向量
des.Key=Encoding.UTF8.GetBytes(Key);
des.IV=_key1;
byte[]cipherBytes=null;
using(MemoryStreamms=newMemoryStream())
{
using(CryptoStreamcs=newCryptoStream(ms,des.CreateEncryptor(),CryptoStreamMode.Write))
{
cs.Write(inputByteArray,0,inputByteArray.Length);
cs.FlushFinalBlock();
cipherBytes=ms.ToArray();//得到加密后的字节数组
cs.Close();
ms.Close();
}
}
returnConvert.ToBase64String(cipherBytes);
}
///<summary>
///AES解密
///</summary>
///<paramname=”cipherText”>密文字符串</param>
///<returns>返回解密后的明文字符串</returns>
publicstaticstringAESDecrypt(stringshowText)
{
byte[]cipherText=Convert.FromBase64String(showText);
SymmetricAlgorithmdes=Rijndael.Create();
des.Key=Encoding.UTF8.GetBytes(Key);
des.IV=_key1;
byte[]decryptBytes=newbyte[cipherText.Length];
using(MemoryStreamms=newMemoryStream(cipherText))
{
using(CryptoStreamcs=newCryptoStream(ms,des.CreateDecryptor(),CryptoStreamMode.Read))
{
cs.Read(decryptBytes,0,decryptBytes.Length);
cs.Close();
ms.Close();
}
}
returnEncoding.UTF8.GetString(decryptBytes).Replace(“