什么是最好的密码加密&解密库与Perl一起使用?

时间:2009-01-19 23:27:42

标签: perl encryption passwords encode

我正在编写一个操纵密码保护的zip文件的perl脚本。因此,我需要存储&检索密码来执行此操作。我有三个存储密码的选项:

  1. 以纯文本格式存储。在你跳入之前,我几乎排除了这个选项。
  2. 使用简单的密码保护程序来防止偶然/意外访问(即使是DBA)
  3. 使用适当的加密/解密库,例如Blowfish或AES。
  4. 无论我选择什么,都必须在Windows下使用Perl,并且易于使用。

    有什么建议吗?

4 个答案:

答案 0 :(得分:4)

在Windows上运行一些Perl加密包,您可以使用ActivePerl包管理器下载PPM。

您还可以使用这些模块的纯Perl版本(查找以_PP结尾的名称)。

我在CPAN上找到了这些模块:

答案 1 :(得分:3)

方法3的主要问题是,在哪里将密钥存储到包含密码的文件中?你可以使用Base64进行方法2,但很容易“解密”。

答案 2 :(得分:1)

这里应该没有问题。您必须使用足够强大的加密方案。您被委托处理敏感数据,您必须尽一切可能保护它。

如果您使用的是Windows,则可以利用DPAPI加密AESkey并将其存储在注册表中。 Perl具有与Win32库交互的模块。

最佳加密是主观的,但截至2009年1月,AES 128足以加密您的数据。

如果用户不完全了解他们正在做什么,即使是最好的加密方案也会失败。

答案 3 :(得分:1)

显然,你是对的#1出局了。

出于基本相同的原因,#2也出局了。这不安全。

对于#3,我可以建议这也是出局。解密密码会使其进入更脆弱的状态进行比较。但是,如果您打算这样做,我建议您使用Crypt :: CBC WITH Crypt :: Blowfish Cipher Block Chaining

[推荐]#4:不是存储用于检索,解密的密码,而是在#3中进行比较。使用Authen::Passphrase一个相当完整和灵活的Perl模块,它允许您比较输入的密码而无需解密/解码原始密码。另请参阅How can I encrypt and decrypt passwords in a Perl CGI program?