2009-01-19 127 views
4

我正在編寫一個操作受密碼保護的zip文件的perl腳本。因此,我需要存儲&檢索密碼來執行此操作。我有三個選項用於存儲密碼:什麼是用於Perl的最好的密碼加密和解密庫?

  1. 以純文本形式存儲。在你加入之前,我已經排除了這個選項。
  2. 使用簡單的密碼管理器來防止偶然/意外訪問(即使由DBA)
  3. 使用適當的加密/解密庫,如Blowfish或AES。

無論我選擇什麼,都必須在Perl中運行,在Windows下運行並且易於使用。

有什麼建議嗎?

回答

4

有幾個Perl加密包可以在Windows上運行,您可以使用ActivePerl包管理器下載PPM。

您也可以使用這些模塊的純Perl版本(查找以_PP結尾的名稱)。

我發現CPAN這些模塊:

3

方法3的主要問題在於,您在哪裏將密鑰存儲在包含密碼的文件中?您可以使用Base64進行方法2,但很容易「解密」。

+0

爲什麼會得到任何反對票?這是一個問題,你需要將密鑰存儲在某個地方。但即使解決了這個問題,您如何防止歹徒在您的代碼中插入「警告$密碼」?確切地說,是 – innaM 2009-01-20 08:48:18

+0

。 如果任何不能被密碼信任的人都可以訪問腳本運行的機器,那麼任何加密都會被打亂。 – jrockway 2009-01-20 09:18:09

1

這裏不應該有任何問題。您必須使用足夠強大的加密方案。你被委託給敏感數據,你必須盡一切可能來保護它。

如果您使用Windows,則可以利用DPAPI對AESkey進行加密並將其存儲在註冊表中。 Perl具有與Win32庫進行交互的模塊。

最好的加密是主觀的,但是AES 128在2009年1月已經足夠強大來加密您的數據。

即使最好的加密方案可以被擊敗,如果用戶不完全明白他們在做什麼。

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?