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

Simplest Method of Encrypting a String in .NET without MachineKey

本问题已经有最佳答案,请猛点这里访问。

我目前正在加密字符串,如下所示:

1
2
3
4
5
6
7
8
9
10
11
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)。

是否有某种方法可以修改上述扩展,以便在多台计算机上加密/解密同一数据库而不编写复杂的内容?


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

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

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

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