我正在编写一个操作受密码保护的 zip 文件的 perl 脚本。因此,我需要存储和检索密码才能做到这一点。我有三个用于存储密码的选项:
- 以纯文本形式存储。在你加入之前,我几乎已经排除了这个选项。
- 使用简单的密码修改器来防止偶然/意外访问(即使是 DBA)
- 使用适当的加密/解密库,例如 Blowfish 或 AES。
无论我选择什么,都必须在 Perl 中运行,在 Windows 下并且易于使用。
有什么建议么?
我正在编写一个操作受密码保护的 zip 文件的 perl 脚本。因此,我需要存储和检索密码才能做到这一点。我有三个用于存储密码的选项:
无论我选择什么,都必须在 Perl 中运行,在 Windows 下并且易于使用。
有什么建议么?
有一些在 Windows 上运行的 Perl 加密包,您可以使用 ActivePerl 包管理器下载 PPM。
您还可以使用这些模块的纯 Perl 版本(查找以 _PP 结尾的名称)。
我在 CPAN 上找到了这些模块:
方法 3 的主要问题是,您将包含密码的文件的密钥存储在哪里?您可以将 Base64 用于方法 2,但这很容易“解密”。
这里应该没有问题。您必须使用足够强大的加密方案。您被委托处理敏感数据,您必须尽一切可能保护它。
如果您使用的是 Windows,则可以利用 DPAPI 加密 AESkey 并将其存储在注册表中。Perl 具有与 Win32 库交互的模块。
最佳加密是主观的,但截至 2009 年 1 月,AES 128 已经足够强大,可以加密您的数据。
如果用户不完全理解他们在做什么,即使是最好的加密方案也可能被打败。
显然,你是对的 #1 出局了。
出于相同的原因,#2 也退出了。它不安全。
至于#3,我可以建议这也出来了。解密密码使其进入更易受攻击的状态以进行比较。但是,如果您要这样做,我建议您使用 Crypt::CBC WITH Crypt::Blowfish 进行密码块链接。
[推荐] #4:而不是像 #3 那样存储用于检索、解密、然后比较的密码。使用Authen::Passphrase一个相当完整和灵活的 Perl 模块,它允许您比较输入的密码而无需解密/解码原始密码。另请参阅如何在 Perl CGI 程序中加密和解密密码?