gpt4 book ai didi

c# - System.Security.Cryptography.ProtectedData.Unprotect 在某些情况下抛出无效 key 错误

转载 作者:可可西里 更新时间:2023-11-01 08:19:49 25 4
gpt4 key购买 nike

所以我尝试在 System.Security.Cryptography.ProtectedData 对象中使用 Unprotect 方法并不断收到异常:

cryptographicexception key not valid for use in specified state

我认为这与 DataProtectionScope 有关(但我不是 100%)。

如果我登录并在 DEBUG 模式下运行服务可执行文件,则此方法有效,这对我来说意味着它将在“currentuser”下运行。但是,如果我尝试运行在 LocalSystem 帐户下运行的实际 Windows 服务,它会抛出前面提到的异常。

方法:

ProtectedData.Unprotect(Byte[] byteArray, <some_password_salt>, DataProtectionScope.CurrentUser)

DataProtectionScope 枚举,只有 CurrentUser 或 LocalMachine 作为您的选项。我不确定解决此问题的最佳选择是什么。

我已尝试将其设置为 DataProtectionScope.LocalMachine,根据 MSDN 文章,机器上运行的任何进程都应该能够取消保护数据。但是没有。

最佳答案

Data protection API使用为每个用户生成的 key 。它是一种对称加密方案,这意味着为一个用户加密的数据不能被另一个用户解密。它也不能被同一用户在不同机器上解密。

这给你留下了两个选择:

  • 在同一台机器上使用同一帐户下运行的代码对数据进行加密和解密
  • 使用 CRYPTPROTECT_LOCAL_MACHINE 标志来使用机器 key ,而不是用户的

无论哪种方式,加密和解密都必须以相同的方式进行。例如加解密时使用 native flag。

关于c# - System.Security.Cryptography.ProtectedData.Unprotect 在某些情况下抛出无效 key 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6587405/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com