当前位置: 首页 > 编程语言 > C#

使用.Net持久存储共享加密数据

时间:2023-04-11 03:17:09 C#

使用.Net持久存储加密数据我需要在应用程序运行之间存储加密数据(一些小字符串)。我不希望用户每次启动应用程序时都提供密码。也就是说,它安全地存储加密密钥。我正在研究RSACryptoServiceProvider并使用PersistentKeyInCsp,但我不确定它是如何工作的。密钥容器是否在应用程序运行或机器重启时保持不变?如果是,它是用户特定的还是机器特定的。即,如果我将加密数据存储在用户的漫游配置文件中,如果用户登录到另一台计算机,我可以解密数据吗?如果以上方法不起作用,我有什么选择(我需要处理漫游配置文件)。数据保护API(DPAPI)完全可以满足您的需求。它使用机器的凭证或(更好的)用户作为加密密钥提供任意数据的对称加密。您不必担心管理密钥;Windows会为您处理这些事情。如果用户更改密码,Windows将使用用户的新密码重新加密数据。使用System.Security.Cryptography.ProtectedData类在.NET中公开DPAPI:byte[]plaintextBytes=GetDataToProtect();byte[]encodedBytes=ProtectedData.Protect(plaintextBytes,null,DataProtectionScope.CurrentUser);Protect方法的第二个参数是一个可选的熵字节数组,可以用作额外的特定于应用程序的“秘密”。要解密,请使用ProtectedData.Unprotect调用:byte[]encodedBytes=GetDataToUnprotect();byte[]plaintextBytes=ProtectedData.Unprotect(encodedBytes,null,DataProtectionScope.CurrentUser);DPAPI适用于漫游配置文件(如此处所述),但您需要将加密数据存储在可供各种计算机访问的某个位置(网络共享、IsolatedStorage和IsolatedStorageScope.Roaming等)。有关详细信息,请参阅MSDN中的ProtectedData类。这是一份DPAPI白皮书,其中提供的信息可能比您想要的更多。我想补充DPAPI方法。虽然我自己还没有实现用户存储方法,但有一个Microsoft文档介绍了一种用户存储方法,它可以为特定用户加密和解密数据。我使用机器商店的DPAPI。我会描述它以防它适合你想要做的事情。我使用Windows服务加载Windows用户配置文件,其密码用于加密数据。作为旁注,DPAPI使用Triple-DES,它可能稍弱(比AES),但我不确定您正在寻找哪种类型的保护。WindowsDataProtectionhttp://msdn.microsoft.com/en-us/library/ms995355.aspx以上是C#学习教程:使用.Net持久存储加密数据共享,如果对大家有用需要了解一下more更多C#学习教程,希望大家多多关注—本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: