在没有MachineKey的情况下在.NET中加密字符串的最简单方法

本文关键字:加密 字符串 方法 最简单 情况下 MachineKey NET | 更新日期: 2023-09-27 18:22:10

我目前正在按如下方式加密字符串:

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)。

有没有什么方法可以修改上面的扩展,这样我就可以在多台机器上加密/解密同一个数据库,而不用写复杂的东西?

在没有MachineKey的情况下在.NET中加密字符串的最简单方法

假设您谈论的是asp.net,您可以尝试将代码保留在web.config中并更改配置。

指定与生产服务器中相同的计算机密钥和算法。

请参阅https://msdn.microsoft.com/en-us/library/w8h3skw9(v=vs.100).aspx供参考。

如果在web.config文件中指定了密钥,那么它应该仅为应用程序覆盖开发环境中的真实机器密钥。