如何使用.Net(C#)在Windows中安全地存储AES密钥?

Nog*_*ter 10 c# windows security encryption

我一直在寻找一种存储给定AES密钥的方法,以便无法检索它,但它仍然可以用于加密和解密(使用C#).我认为可以在这里找到非对称密钥存储的等价物,但我正在寻找可用于对称加密的东西.它是否以托管形式存在(pre .Net 4)?

sai*_*lle 5

Windows DPAPI(Win32文档)及其.NET包装器(ProtectedData Class)不存储任何数据.相反,Windows DPAPI返回加密密码值,您可以将其存储在任何您喜欢的位置,包括在多个服务器上.

在我的工作地点,我们使用DPAPI为AES密钥生成一个密码,然后我们将其存储在注册表中.

Windows DPAPI的唯一用途是加密数据,以便只有给定的用户帐户或计算机才能对其进行解密,而无需存储密码.

.NET ProtectedData类自2.0开始就在.NET Framework中.

我会坚持使用Windows DPAPI而不是第三方产品,因为它已经成熟,稳定,免费,易于使用并且完全支持.NET.

  • 您可以使用DPAPI在2台独立的计算机上独立加密密钥,如果您愿意,可以在2个不同的用户帐户下运行,只是2个密码值不可互换,即.必须在进行加密的同一帐户(或机器,如果使用基于机器的DPAPI)下解密.如果你想拥有一个可以在多台机器上解密的cypher,那么是的,我会说你需要一个共享帐户和一个域控制器. (4认同)

SLa*_*aks 2

根据您要防御的对象,您可以使用ProtectedDataclass