很多威胁谈谈如何对密码进行加密,对称的和不对称加密等等存储密码的应用程序
我有一个简单probem。如果我要求用户每次希望连接到sqlite数据库时都输入密码,那么一切都可以。
现在的问题是,我想要在应用程序中存储密码,以便用户不必每次都希望连接到sqlite数据库时键入它。
我知道我可以加密密码并存储任何地方加密的密码。但这意味着我需要存储第二个密码来解密该密码。
我可以继续重复此过程并加密第二个密码,但随后我将再次留下一个未加密的密码,我需要取消加密该密码。
所以我的问题是...我应该在哪里存储我需要取消加密其他密码的最终密码?哪里将是放置该密码最安全的地方?
如果你不理解的最后一部分,这里是什么,我想在最后部分解释一个例子:
让我们说:
密码才能打开数据库是:1234
那么我会用钥匙someKey
加密密码,并让我们说,让abcd
,如果我再解密方法abcd
用钥匙someKey
我应该得到1234
我可以用钥匙someKey
再次加密abcd
,我可能会得到xy#8
最后,如果我将能够unencrypting xy#8
得到1234
密码用钥匙someKey
话,我会得到abcd
我会再解密方法是使用相同的密钥someKey
为了得到1234
所以无论多少次我重复这个过程,我总是会在应用程序的某个地方加上一些未加密的密钥someKey
。我不需要存储该密钥的唯一方法是,如果我要求用户每次希望连接到数据库时都提供密码。
哪里将最安全的地方存储应用程序中的字符串someKey
尽可能隐藏?
http://blogs.msdn.com/b/ericlippert/archive/2011/09/27/keep-it-secret-keep-it-safe.aspx – SLaks 2012-02-15 00:45:44
为什么数据库首先有一个密码? – SLaks 2012-02-15 00:46:12
我希望对使用该应用程序的用户保持灵活性。我需要让他们决定数据库是否有密码,没有密码或没有密码,并让程序记住它,这样如果有人窃取了data.db文件,他们将无法打开它。 – 2012-02-15 00:48:40