如何System.Security.Cryptography.ProtectedData使用System.Security.Cryptography.ProtectedData它写入注册表之前保护许可证数据生成唯一的标识
ProtectData.Protect(Byte[], Byte[], DataProtectionScope.LocalMachine)
Dataprotection范围是LocalMachine。
ProtectData用于加密字符串的参数是什么? 如果我将加密的字符串复制到另一台机器,它会工作吗?
某些用户报告许可问题,ProtectedData是否一致?
在LOCALMACHINE范围,受保护的数据与机器上下文相关联。计算机上运行的任何进程都可以取消数据保护。此枚举值通常用于服务器特定的应用程序,该应用程序在不允许不受信任的用户访问的服务器上运行。
小心LOCALMACHINE枚举值允许多个帐户取消保护的数据。只有当您信任计算机上的每个帐户时才使用此值。对于大多数情况,您应该使用CurrentUser值。
加密的数据只能在其被加密的相同的机器上被解密。
DPAPI使用MasterKey(随机数据的512位)以生成用于加密和解密的会话密钥。这意味着它将保持完整,直到重新安装操作系统。
反射显示ProtectData.Protect基本上是crypt32.dll的CryptProtectData()函数的包装。
从MSDN:(https://msdn.microsoft.com/en-us/library/windows/desktop/aa380261%28v=vs.85%29.aspx)
CryptProtectData函数对在一个 DATA_BLOB结构的数据加密。通常,只有与加密数据的用户具有相同登录凭证的用户才能解密数据。在 另外,加密和解密通常必须在 同一台计算机上完成。
LocalMachine作用域将用当前计算机而不是单个用户加密的数据关联起来。调用CryptProtectData的计算机上的任何用户都可以使用CryptUnprotectData来解密数据。 –
及其对DPAPI的CryptProtectData函数的包装,大量的文件; https://msdn.microsoft.com/en-us/library/windows/desktop/aa380261%28v=vs.85%29.aspx –
@AlexK。我看了一下。如果我使用本地机器的范围,如果用户更改他的密码或更改硬件或其他东西,密钥是否会更改? – techno