在将许可证数据写入注册表之前,我使用 System.Security.Cryptography.ProtectedData 保护许可证数据。
ProtectData.Protect(Byte[], Byte[], DataProtectionScope.LocalMachine)
数据保护范围是 LocalMachine。
ProtectData 使用哪些参数来加密字符串?如果我将加密的字符串复制到另一台机器上,它会工作吗?
一些用户报告许可问题,ProtectedData 是否一致?
在将许可证数据写入注册表之前,我使用 System.Security.Cryptography.ProtectedData 保护许可证数据。
ProtectData.Protect(Byte[], Byte[], DataProtectionScope.LocalMachine)
数据保护范围是 LocalMachine。
ProtectData 使用哪些参数来加密字符串?如果我将加密的字符串复制到另一台机器上,它会工作吗?
一些用户报告许可问题,ProtectedData 是否一致?
在 LocalMachine 范围内,受保护的数据与机器上下文相关联。计算机上运行的任何进程都可以取消保护数据。此枚举值通常用于特定于服务器的应用程序,这些应用程序在不允许不受信任的用户访问的服务器上运行。
警告 LocalMachine 枚举值允许多个帐户取消保护数据。仅当您信任计算机上的每个帐户时才使用此值。在大多数情况下,您应该使用 CurrentUser 值。
加密数据只能在加密的同一台机器上解密。
DPAPI 使用 MasterKey(512 位随机数据)生成用于加密和解密的会话密钥。这意味着它将保持不变,直到重新安装操作系统。
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 结构中的数据执行加密。通常,只有与加密数据的用户具有相同登录凭据的用户才能解密数据。此外,加密和解密通常必须在同一台计算机上完成。