【发布时间】:2020-07-06 15:58:18
【问题描述】:
我想在我的 wcf 服务中加密。为此,我正在编写一个类来加密和解密字符串。加密似乎工作正常并产生一个加密字符串,但是在解密时它给出了不允许双重转义的错误或错误 401。我在 webconfig 中添加了以下内容
<security>
<requestFiltering allowDoubleEscaping="true" />
</security>
现在它给出了字符串长度不正确或较短字符串坏字符串的错误。代码是
加密
static string hash = "mypass@mysitec0m";
public static string Encrypt(string decrypted)
{
byte[] data = UTF8Encoding.UTF8.GetBytes(decrypted);
using (MD5CryptoServiceProvider mds = new MD5CryptoServiceProvider())
{
byte[] keys = mds.ComputeHash(UTF8Encoding.UTF8.GetBytes(hash));
using (TripleDESCryptoServiceProvider tripDes = new TripleDESCryptoServiceProvider())
{
ICryptoTransform transform = tripDes.CreateEncryptor();
byte[] result = transform.TransformFinalBlock(data, 0, data.Length);
return Convert.ToBase64String(result);
}
}
}
并解密
public static string decrypt(string encrypted)
{
byte[] data = Convert.FromBase64String(encrypted);
using (MD5CryptoServiceProvider mds = new MD5CryptoServiceProvider())
{
byte[] keys = mds.ComputeHash(UTF8Encoding.UTF8.GetBytes(hash));
using (TripleDESCryptoServiceProvider tripDes = new TripleDESCryptoServiceProvider())
{
ICryptoTransform transform = tripDes.CreateDecryptor();
byte[] result = transform.TransformFinalBlock(data, 0, data.Length);
return UTF8Encoding.UTF8.GetString(result);
}
}
}
为什么会出现错误,我该如何解决。
【问题讨论】:
标签: c# wcf encryption