nvarchar,最好先用base64编码将加密后的字节转换到字符串:
byte[] data = Encrypt(...);//加密
string str = Convert.ToBase64String(data);从数据库取出数据之后,先这样处理一下:
string str = ...//取数据
byte[] data = Convert.FromBase64String(str);
byte[] data = Encrypt(...);//加密
string str = Convert.ToBase64String(data);从数据库取出数据之后,先这样处理一下:
string str = ...//取数据
byte[] data = Convert.FromBase64String(str);
static string Encrypt(string datastr, string keystr) {
DESCryptoServiceProvider desc = new DESCryptoServiceProvider();//des进行加密byte[] key = System.Text.Encoding.ASCII.GetBytes(keystr);
byte[] data = System.Text.Encoding.Unicode.GetBytes(datastr);MemoryStream ms = new MemoryStream();//存储加密后的数据
CryptoStream cs = new CryptoStream(ms,desc.CreateEncryptor(key, key),CryptoStreamMode.Write);cs.Write(data, 0, data.Length);//进行加密
cs.FlushFinalBlock();return System.Convert.ToBase64String(ms.ToArray());//取加密后的数据
}解密:
static string Decrypt(string datastr, string keystr) {
byte[] data = System.Convert.FromBase64String(datastr);DESCryptoServiceProvider desc = new DESCryptoServiceProvider();byte[] key = System.Text.Encoding.ASCII.GetBytes(keystr);MemoryStream ms = new MemoryStream();//存储解密后的数据
CryptoStream cs = new CryptoStream(ms,desc.CreateDecryptor(key, key),CryptoStreamMode.Write);cs.Write(data, 0, data.Length);//解密数据
cs.FlushFinalBlock();return System.Text.Encoding.Unicode.GetString(ms.ToArray());
}