4

我正在编写一个操作受密码保护的 zip 文件的 perl 脚本。因此,我需要存储和检索密码才能做到这一点。我有三个用于存储密码的选项:

  1. 以纯文本形式存储。在你加入之前,我几乎已经排除了这个选项。
  2. 使用简单的密码修改器来防止偶然/意外访问(即使是 DBA)
  3. 使用适当的加密/解密库,例如 Blowfish 或 AES。

无论我选择什么,都必须在 Perl 中运行,在 Windows 下并且易于使用。

有什么建议么?

4

4 回答 4

4

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

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

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

于 2009-01-20T01:49:21.910 回答
3

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

于 2009-01-19T23:32:16.960 回答
1

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

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

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

如果用户不完全理解他们在做什么,即使是最好的加密方案也可能被打败。

于 2009-01-19T23:47:55.353 回答
1

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

出于相同的原因,#2 也退出了。它不安全。

至于#3,我可以建议这也出来了。解密密码使其进入更易受攻击的状态以进行比较。但是,如果您要这样做,我建议您使用 Crypt::CBC WITH Crypt::Blowfish 进行密码块链接

[推荐] #4:而不是像 #3 那样存储用于检索、解密、然后比较的密码。使用Authen::Passphrase一个相当完整和灵活的 Perl 模块,它允许您比较输入的密码而无需解密/解码原始密码。另请参阅如何在 Perl CGI 程序中加密和解密密码?

于 2014-01-30T03:41:20.943 回答