1、 关于用户密码的加密
这种情况一般采用散列来进行加密并以Base64编码存入数据库,然后验证用户密码时,只需要对用户输入进行再次加密、编码,对比数据库中的值即可
有两种选择SHA1和MD5
byte[] original = System.Text.Encoding.UTF8.GetBytes("test");
SHA1CryptoServiceProvider hashSHA1 = new SHA1CryptoServiceProvider();
byte[] keyhash = hashSHA1.ComputeHash(original);
hashSHA1.Clear();
string result = System.Text.Encoding.UTF8.GetString(keyhash);
return result;
byte[] original = System.Text.Encoding.UTF8.GetBytes("test");
MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
byte[] keyhash = hashmd5.ComputeHash(original);
hashmd5.Clear();
string result = System.Text.Encoding.UTF8.GetString(keyhash);
return result;
2、 关于其他字符串的加密和解密
在一些情况下需要保存一些字符信息,不是用于验证,而是为了一些信息的读取。这时就要用到另一种方法的加密/解密了
加密
TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
des.Key = MakeMD5(key); //电子密码本模式,分别加密每个块
des.Mode = CipherMode.ECB;
return des.CreateEncryptor().TransformFinalBlock(original, 0, original.Length);
解密
byte[] buff = Convert.FromBase64String(encrypted);
byte[] kb = System.Text.Encoding.Default.GetBytes(key);
return System.Text.Encoding.GetString(Decrypt(buff,kb));