我目前正在加密字符串,如下所示:
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)));
}
但是,当我将生产数据库移动到开发服务器(在部署之前测试新版本)时,这些函数无法解密已存储在数据库中的数据(我认为这是因为我使用了的machineKey)。
是否有某种方法可以修改上述扩展,以便我可以在多台机器上加密/解密同一个数据库,而无需编写复杂的内容?
答案 0 :(得分:1)
假设您正在谈论asp.net,您可以尝试保留您的代码并改为在web.config中更改配置。
指定与生产服务器中相同的机器密钥和算法。
请参阅https://msdn.microsoft.com/en-us/library/w8h3skw9(v=vs.100).aspx以供参考。
如果在web.config文件中指定了密钥,它应该仅为您的应用程序覆盖开发环境中的真实机器密钥。