许多威胁谈论如何加密密码,对称和非对称加密等......
我有一个简单的探测器。如果我要求用户每次希望连接到sqlite数据库时都输入密码,那么一切都还可以。
现在问题是我想将密码存储在应用程序中,这样用户每次希望连接到sqlite数据库时都不必输入密码。
我知道我可以加密密码并在任何地方加密密码。但那意味着我需要存储第二个密码才能在其他地方解密该密码。
我可以继续重复此过程并加密第二个密码,但之后我将再次使用未加密的密码,我需要解密该密码。
所以我的问题是......我应该在哪里存储我需要解密其他密码的最终密码?哪个地方是最安全的密码?
如果你不理解最后一部分,这里是我试图在最后一部分解释的一个例子:
让我们说:
打开数据库的密码是:1234
然后我会使用密钥someKey
加密该密码,让我们假设abcd
如果我使用密钥abcd
取消加密someKey
我应该1234
我可以使用密钥abcd
再次加密someKey
,我可能会xy#8
最后,如果我能够通过使用密钥1234
取消加密xy#8
来获取someKey
密码,那么我将获得abcd
我将以相同的方式解密密钥someKey
以获取1234
所以重复这个过程多少次并不重要,我总会在应用程序的某个地方找到一些未加密的密钥someKey
。我不需要存储该密钥的唯一方法是,每当他要求连接到数据库时我都要求用户提供密码。
将应用程序中字符串someKey
尽可能隐藏的最安全的地方放在哪里?
答案 0 :(得分:3)
您应该使用ProtectedData
类加密密码
这将让Windows为您存储密钥。
如果您指定了每用户加密并且用户具有登录密码,则Windows将使用登录密码来创建其加密密钥。
有关详情,请参阅DPAPI。