【发布时间】:2012-03-06 09:10:38
【问题描述】:
很多威胁都在谈论如何加密密码、对称和非对称加密等......
我有一个简单的问题。如果我要求用户每次连接到 sqlite 数据库时都输入密码,那么一切正常。
现在的问题是我想将密码存储在应用程序中,这样用户就不必在每次连接到 sqlite 数据库时都输入密码。
我知道我可以加密密码并将加密的密码存储在任何地方。但这意味着我需要存储第二个密码才能在其他地方解密该密码。
我可以继续重复这个过程并加密第二个密码,但我会再次留下一个未加密的密码,我需要解密那个密码。
所以我的问题是......我应该将解密其他密码所需的最终密码存储在哪里?放置密码最安全的地方是哪里?
如果你不明白最后一部分,这里是我试图解释最后一部分的一个例子:
假设:
打开数据库的密码是:1234
然后我将使用密钥someKey 加密该密码,假设给出abcd
如果我用密钥someKey 解密abcd,我应该得到1234
我可以用密钥someKey 再次加密abcd,我可能会得到xy#8
最后,如果我能够通过使用密钥someKey 解密xy#8 来获得1234 密码,那么我将获得abcd 然后我将使用相同的密钥someKey 解密它以获得1234
所以不管我重复多少次这个过程,我总是会在应用程序的某个地方得到一些未加密的密钥someKey。我不需要存储该密钥的唯一方法是,如果我要求用户每次连接到数据库时都提供密码。
将字符串someKey 尽可能隐藏地存储在应用程序中的哪里是最安全的地方?
【问题讨论】:
-
为什么数据库首先要有密码?
-
我希望灵活地处理使用该应用程序的用户。我需要让他们决定数据库是否有密码、没有密码或有密码,并让程序记住它,这样如果有人窃取了 data.db 文件,他们将无法打开它。
标签: c# encryption passwords