我编写了一个加密程序,使用用户输入的密码作为加密密钥加密和解密所选文件。
一旦进入/解密,将询问用户是否要删除所使用的文件,并且在解密的情况下,打开新解密的文件。
我的兄弟昨天提出了这个应用程序的想法,如果我忘记了密码,可能会让我感到很难过。 他建议我设置一个“主”密码,我可以输入该密码来解密用这个应用程序加密的任何文件。简单易用,以防万一我忘记了用来加密文件的密码。
基于密码作为加密密钥的事实,可以这样做吗?如果是这样,怎么样?
我在这里找到了我使用的代码示例(并且已经修改了以获得更多功能): http://www.codeproject.com/KB/security/EncryptFile.aspx
提前致谢!
答案 0 :(得分:3)
我现在至少可以想到两种方式:
1)使用主密码加密其他密码。这就像KDE Wallet这样的事情,他们只是用一些容易记住的东西保护你的密码。
2)使用数学相关的键。这样做要困难得多,因为它需要更多的大脑以及更多的计算能力来实现。如果您有兴趣,我建议您详细了解主题here和here。
答案 1 :(得分:1)
_NT的回答非常接近你可能想要这样做,但(IMO)不太正确。特别是,如果使用主密码加密其他密码,则必须始终输入主密码以解密文件。
至少当我读到您所说的内容时,您真正想要的是输入 文件的密码,或者(如果您忘记了)主密码。这也是可能的,但有点不同。为此,您通常希望生成一个随机密钥,用于加密文件本身的内容。然后,使用文件密码加密该密钥,并将加密密钥与文件一起存储。您使用主密码单独加密密钥,并将该加密密钥与文件一起存储。
当需要解密文件时,您需要用户输入文件密码,使用该密码解密密钥,并使用解密密钥解密文件。如果他们忘记了文件密钥,则输入主密码。您可以使用它来解密使用主密码加密的密钥,并使用该密钥解密文件。
正如您可以看到的,此方法将支持任意数量的单独密码,而不仅仅是两个。例如,您可以使用它来多用户访问加密文件。每个应该访问该文件的用户都有自己的加密密钥与文件一起存储,每个用户都使用自己的密码来访问该文件。
答案 2 :(得分:0)
不,如果您需要“主密码”,那么您必须使加密密钥成为标准,然后使用密码安全访问密钥。如果密钥是基于密码的,那么就没有覆盖它。
答案 3 :(得分:0)
我不确定这是否是答案,但我会研究公钥加密。我曾经对RSA加密进行过一些研究和实现,我相信你可以创建某种算法来实现它。
这应该让你开始
http://en.wikipedia.org/wiki/Public-key_cryptography
(另外,在维基百科上查找RSA加密,看看我如何只发布一个没有更多重复点的链接。)
最后,我不知道你使用的语言是什么,但我使用的是Visual Basic,它提供了一些处理RSA的东西。
答案 4 :(得分:0)
您始终可以创建使用主密码加密的文件。在此文件中,您将存储您使用的所有已使用密码。通过使用主密码,您可以对应用程序进行编程以使用该文件。
我认为这是您可以在没有实际密码的情况下解决问题的最接近的地方。