您的位置:首页 > Web前端

AES128的加密解密学习总结

2016-02-01 14:55 501 查看
1.UTF8 互联网的普及,强烈要求出现一种统一的编码方式。

string strcode="我是若见";
byte[] buffer=Encoding.UTF8.GetBytes(strcode);
string msg= Encoding.UTF8.GetString(buffer,0,buffer.Length); //我是若见


2.对Convert.ToBase64String和Convert.FromBase64String认识

Convert.FromBase64String 是 Convert.ToBase64String 的逆过程,
Convert.ToBase64String把byte[]转成base 64字符串,Convert.FromBase64String能把base 64字符串恢复为byte[]


3.AES128加密解密

//json 加密的数据,key 密钥,EncryptIV  Iv值
protected  string AESEncrypt(string json, string key,string EncryptIV )
{
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
byte[] ivArray = UTF8Encoding.UTF8.GetBytes(EncryptIV);
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(json);
RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyArray;
rDel.IV = ivArray;
rDel.Mode = CipherMode.CBC;
rDel.Padding = PaddingMode.Zeros;
//基本的加密转换运算ICryptoTransform 接口 CreateEncryptor,用当前的 Key 属性和初始化向量(IV) 创建对称加密器对象TransformFinalBlock转换指定字节数组的指定区域
//ICryptoTransform 是一个接口。需要此接口才能在任何服务提供程序上调用 CreateEncryptor 方法,服务提供程序将返回定义该接口的实际 encryptor 对象。
ICryptoTransform cTransform = rDel.**CreateEncrypto**r();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return **Convert.ToBase64String**(resultArray, 0, resultArray.Length);
}
public static string AESDecrypt(string toDecrypt, string key string EncryptIV)
{
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
byte[] ivArray = UTF8Encoding.UTF8.GetBytes(EncryptIV);
byte[] toEncryptArray = **Convert.FromBase64String**(toDecrypt);
RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyArray;
rDel.IV = ivArray;
rDel.Mode = CipherMode.CBC;
rDel.Padding = PaddingMode.Zeros;
CreateDecryptor() //用当前的 Key 属性和初始化向量 (IV) 创建对称解密器对象**
ICryptoTransform cTransform = rDel.**CreateDecryptor**();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return **UTF8Encoding.UTF8.GetString**(resultArray);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  string 解密 加密 buffer