【发布时间】:2018-06-07 11:49:58
【问题描述】:
我有一个字符串,我想在运行时在我的 C# WPF 应用程序中解密。
我认为我可以使用以下代码:
using System.Text;
using System.Web;
using System.Web.Security;
[Test]
public void Encrypt()
{
var text = "This is my string";
var stream = Encoding.UTF8.GetBytes(text);
var encodedValue = MachineKey.Protect(stream);
var result = HttpServerUtility.UrlTokenEncode(encodedValue);
}
[Test]
public void Decrypt()
{
var text = "ZG1CrjMgyq5O1krnBxoYM5rXH071xVxFnhC3xTTBiJ05Uy4msSe0jonP-ayFuChh_M6EaEhMif_j7i8yUSQ4Pkc63moEbvq34hMZGfYkazo1";
var stream = HttpServerUtility.UrlTokenDecode(text);
var decodedValue = MachineKey.Unprotect(stream);
var result = Encoding.UTF8.GetString(decodedValue);
}
但是我得到了一个
CryptographicException: 加密操作期间发生错误
在我的 WPF 应用程序中运行 Unprotect 命令时出错。有什么想法吗?
-- 如果上述代码仅适用于 Web 应用程序(即不在 WPF 中),为什么在单元测试中调用时它会起作用?
【问题讨论】:
-
异常是从哪一行抛出的?
-
kennyzx - 请查看我更新的问题
-
您确定要解码从 same 机器编码的值吗? 'ZG1CrjMgyq5O1krnBxoYM5rXH071xVxFnhC3xTTBiJ05Uy4msSe0jonP-ayFuChh_M6EaEhMif_j7i8yUSQ4Pkc63moEbvq34hMZGfYkazo1' 值是否可以从不同的机器计算?