【问题标题】:Is it possible to add a "Master" password for an encrypt/decrypt program?是否可以为加密/解密程序添加“主”密码?
【发布时间】:2010-07-28 14:17:02
【问题描述】:

我编写了一个加密程序,它使用用户输入的密码作为加密密钥来加密和解密选定的文件。

加密/解密后,系统会询问用户是否要删除已使用的文件,如果要解密,则打开新解密的文件。

我的兄弟昨天想出了一个关于这个应用程序的想法,如果我忘记了密码,它可能会为我省去很多麻烦。 他建议我设置一个“主”密码,我可以输入该密码来解密使用此应用程序加密的任何文件。一些简单的东西很容易记住,以防我忘记了我最初用来加密文件的密码。

基于密码作为加密密钥的事实,可以做到吗?如果有,怎么做?

我使用的代码示例(后来为了更强大的功能进行了修改)位于此处: http://www.codeproject.com/KB/security/EncryptFile.aspx

提前致谢!

【问题讨论】:

    标签: vb.net passwords encryption


    【解决方案1】:

    目前我能想到的方法至少有两种:

    1) 使用主密码加密其他密码。这就是KDE Wallet 之类的操作方式,它们只是用易于记忆的方式保护您的密码。

    2) 使用数学相关的键。这要困难得多,因为它需要更多的大脑和更多的计算能力才能实现。如果您有兴趣,我建议您阅读更多关于 herehere 的主题。

    【讨论】:

      【解决方案2】:

      _NT 的答案非常接近您可能想要的方式,但(IMO)不太正确。特别是,如果您使用主密码来加密其他密码,您必须始终输入主密码来解密文件。

      至少在我读到您所说的内容时,您真正想要的是输入或者文件的密码,或者(如果您忘记了)主密码。这也是可能的,但工作方式略有不同。为此,您通常希望生成一个随机密钥,用于加密文件本身的内容。然后,您使用文件密码对该密钥进行加密,并将加密的密钥与文件一起存储。您使用主密码单独加密密钥,并将该加密密钥与文件一起存储。

      当需要解密文件时,您让用户输入文件密码,使用该密码来解密密钥,并使用解密后的密钥来解密文件。如果他们忘记了文件密钥,则输入主密码。您可以使用它来解密使用主密码加密的密钥,并使用该密钥来解密文件。

      如您所见,此方法将支持任意数量的单独密码,而不仅仅是两个。例如,您可以将其用于多用户访问加密文件。每个应该访问该文件的用户都有自己的加密密钥与该文件一起存储,并且每个用户都使用自己的密码来访问该文件。

      【讨论】:

      • 我对多用户支持不太在意。我的应用程序基本上仅供个人使用,以使我的财务数据(预算、银行对账单等)不可读。我已经用 Excel 为我的预算设置了密码,但只要尝试足够长的时间,你就可以破解任何密码......至少如果它是加密的,你将需要锁定它的同一个应用程序来读取它。
      【解决方案3】:

      不,如果您想要一个“主密码”,那么您必须将加密密钥设为标准,然后使用密码保护对密钥的访问。如果密钥基于密码,则不会覆盖它。

      【讨论】:

        【解决方案4】:

        我不确定这是否是答案,但我会研究公钥密码学。不久前我对 RSA 加密进行了一些研究和实现,我相信你可以创建某种算法来使用它。

        这应该让你开始

        http://en.wikipedia.org/wiki/Public-key_cryptography

        (另外,在维基百科上查找 RSA 加密,看看我如何只能发布一个链接而没有更多的代表点。)

        最后,我不知道你用的是什么语言,但我用的是 Visual Basic,它提供了一些东西来处理 RSA。

        【讨论】:

        • 如果你有更多的链接,把它们发布在这个下的cmets中......记录一下,我使用的是VB
        【解决方案5】:

        您始终可以创建一个使用您的主密码加密的文件。在此文件中,您将存储您使用的所有使用过的密码。通过使用您的主密码,您可以对应用程序进行编程以使用该文件。

        我认为这是在没有实际密码的情况下最接近手头问题的方法。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-05-04
          • 2017-07-17
          • 2012-10-03
          • 2020-11-10
          • 1970-01-01
          • 1970-01-01
          • 2011-09-14
          相关资源
          最近更新 更多