2

在将许可证数据写入注册表之前,我使用 System.Security.Cryptography.ProtectedData 保护许可证数据。

ProtectData.Protect(Byte[], Byte[], DataProtectionScope.LocalMachine)

数据保护范围是 LocalMachine。

ProtectData 使用哪些参数来加密字符串?如果我将加密的字符串复制到另一台机器上,它会工作吗?

一些用户报告许可问题,ProtectedData 是否一致?

4

2 回答 2

2

在 LocalMachine 范围内,受保护的数据与机器上下文相关联。计算机上运行的任何进程都可以取消保护数据。此枚举值通常用于特定于服务器的应用程序,这些应用程序在不允许不受信任的用户访问的服务器上运行。

警告 LocalMachine 枚举值允许多个帐户取消保护数据。仅当您信任计算机上的每个帐户时才使用此值。在大多数情况下,您应该使用 CurrentUser 值。

加密数据只能在加密的同一台机器上解密。

DPAPI 使用 MasterKey(512 位随机数据​​)生成用于加密和解密的会话密钥。这意味着它将保持不变,直到重新安装操作系统。

https://msdn.microsoft.com/en-us/library/ms995355.aspx

于 2015-06-07T14:27:24.007 回答
0

Reflector 显示 ProtectData.Protect 基本上是 crypt32.dll 的 CryptProtectData() 函数的包装器。

来自 MSDN:(https://msdn.microsoft.com/en-us/library/windows/desktop/aa380261%28v=vs.85%29.aspx

CryptProtectData 函数对 DATA_BLOB 结构中的数据执行加密。通常,只有与加密数据的用户具有相同登录凭据的用户才能解密数据。此外,加密和解密通常必须在同一台计算机上完成。

于 2015-06-07T14:33:02.847 回答