C# CryptographicException:加密操作期间出错
我有一个字符串要在运行时在我的C#WPF应用程序中解密 我想我可以使用以下代码:C# CryptographicException:加密操作期间出错,c#,wpf,security,C#,Wpf,Security,我有一个字符串要在运行时在我的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); va
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),为什么在单元测试中调用时它可以工作?尝试这些解决方案,希望它可以工作: 1.您是否在web.config中定义了加密/解密的“
machineKey
”条目?如果没有,那么定义它
2.只需清除浏览器的所有cookie和缓存数据
3.如果您使用的是forms auth。您可以在捕获异常并允许用户登录并创建有效cookie时注销(将其添加到您的global.asax
)
我现在明白了,不管怎样,这种模式对我来说是行不通的。。 当我使用客户端应用程序时,任何人都可以检查我程序集中的代码并解密字符串 我将执行以下操作:
- 使用单独的控制台应用程序和私钥加密我的字符串
- 创建一个具有私钥并可以解密字符串的Azure函数
- 从我的客户端WPF应用程序通过SSL调用Azure函数以解密字符串
catch (CryptographicException cex)
{
FormsAuthentication.SignOut();
}