【发布时间】:2015-11-17 12:34:36
【问题描述】:
我目前正在加密字符串如下:
public static string Encrypt(this string DecryptedValue)
{
if (string.IsNullOrWhiteSpace(DecryptedValue)) { return string.Empty; }
return HttpServerUtility.UrlTokenEncode(MachineKey.Protect(Encoding.UTF8.GetBytes(DecryptedValue.Trim())));
}
public static string Decrypt(this string EncryptedValue)
{
if (string.IsNullOrWhiteSpace(EncryptedValue)) { return string.Empty; }
return Encoding.UTF8.GetString(MachineKey.Unprotect(HttpServerUtility.UrlTokenDecode(EncryptedValue)));
}
但是,当我将生产数据库移动到开发服务器(在部署之前测试新版本)时,这些函数无法解密已经存储在数据库中的数据(我假设这是因为我使用了机器密钥)。
有没有什么方法可以修改上述扩展,这样我就可以在多台机器上加密/解密同一个数据库而无需编写复杂的东西?
【问题讨论】:
-
请定义“简单”。 ROT13 或 XOR 简单吗?也许,但不再安全......
-
加密应该很困难,而且很慢。如果您将其用于密码,它也应该只是一种单向加密。你在加密和解密什么?
-
我使用哈希作为密码(所以它们是单向的)——在这里,我正在加密/解密信用卡号——所以我必须能够读取原始字符串——
标签: c# asp.net encryption cryptography