求一个加密解密的方法

wqandxxj 2011-11-20 01:34:37
最近客户要求对数据库中的一些数据进行加密解密,MD5之类的要么不能解密要么就是不支持silverlight,求一个可用的
...全文
121 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sjfujiang 2011-11-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 heren5201314 的回复:]

C# code

/// <summary>
/// 字符串加密
/// </summary>
/// <param name="input">输入的字符串</param>
/// <param name="password">使用的密码</param>
/// <returns>加密的字符串</returns>
……
[/Quote]
学习
zhongqingquan 2011-11-22
  • 打赏
  • 举报
回复
[/red]3DES,DES可以试试...
heren5201314 2011-11-21
  • 打赏
  • 举报
回复

/// <summary>
/// 字符串加密
/// </summary>
/// <param name="input">输入的字符串</param>
/// <param name="password">使用的密码</param>
/// <returns>加密的字符串</returns>
public static string Encrypt(string input, string password)
{

string data = input;
byte[] utfdata = UTF8Encoding.UTF8.GetBytes(data);
byte[] saltBytes = UTF8Encoding.UTF8.GetBytes(password);

//加密算法
AesManaged aes = new AesManaged();
Rfc2898DeriveBytes rfc = new Rfc2898DeriveBytes(password, saltBytes);

//设置参数
aes.BlockSize = aes.LegalBlockSizes[0].MaxSize;
aes.KeySize = aes.LegalKeySizes[0].MaxSize;
aes.Key = rfc.GetBytes(aes.KeySize / 8);
aes.IV = rfc.GetBytes(aes.BlockSize / 8);

//加密
ICryptoTransform encryptTransf = aes.CreateEncryptor();

//输出流,也可以一个FileStream
MemoryStream encryptStream = new MemoryStream();
CryptoStream encryptor = new CryptoStream(encryptStream, encryptTransf, CryptoStreamMode.Write);

encryptor.Write(utfdata, 0, utfdata.Length);
encryptor.Flush();
encryptor.Close();

byte[] encryptBytes = encryptStream.ToArray();
string encryptedString = Convert.ToBase64String(encryptBytes);

return encryptedString;
}
/// <summary>
/// 解密字符串
/// </summary>
/// <param name="base64Input">输入解密</param>
/// <param name="str">使用的密码</param>
/// <returns>解密字符串</returns>
public static string Decrypt(string base64Input, string str)
{
byte[] encryptBytes = Convert.FromBase64String(base64Input);
byte[] saltBytes = Encoding.UTF8.GetBytes(str);
//我们的加密算法
AesManaged aes = new AesManaged();
Rfc2898DeriveBytes rfc = new Rfc2898DeriveBytes(str, saltBytes);
//设置参数
aes.BlockSize = aes.LegalBlockSizes[0].MaxSize;
aes.KeySize = aes.LegalKeySizes[0].MaxSize;
aes.Key = rfc.GetBytes(aes.KeySize / 8);
aes.IV = rfc.GetBytes(aes.BlockSize / 8);

//开始解密
ICryptoTransform decryptTrans = aes.CreateDecryptor();

//输出流,也可以一个FileStream
MemoryStream decryptStream = new MemoryStream();
CryptoStream decryptor = new CryptoStream(decryptStream, decryptTrans, CryptoStreamMode.Write);

decryptor.Write(encryptBytes, 0, encryptBytes.Length);
decryptor.Flush();
decryptor.Close();

byte[] decryptBytes = decryptStream.ToArray();
string decryptedString = UTF8Encoding.UTF8.GetString(decryptBytes, 0, decryptBytes.Length);
return decryptedString;
}
第二个参数传:"saltValue"等

8,734

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧