2013-12-09 32 views
1

OpenSSL的密碼,我想用紅寶石OpenSSL庫來產生同樣的事情,因爲這OpenSSL的命令:生成使用Ruby

$ openssl passwd -1 mypassword 

現在,在我的代碼,我這樣做:

mypass = `openssl passwd -1 mypassword` 

...這工作,但它似乎愚蠢。我覺得你應該可以使用OpenSSL :: Digest來獲得相同的結果。但是,我似乎無法讓它工作。

回答

3

openssl passwd -1 implements UNIX crypt(3) algorithm。實現(md5crypt)駐留在apps/passwd.c。因此,實現代碼不是OpenSSL庫函數。正如函數註釋所示:

基於MD5的密碼算法(應該可能作爲 庫函數提供;然後靜態緩衝區將不可接受)。

所以你不會在OpenSSL :: Digest中找到它。

但是,您可能會發現其他庫很有用,如unix-crypt

0
require 'openssl' 
OpenSSL::Digest::MD5.hexdigest(mypassword) 
+0

如果我的密碼是「密碼」,則openssl命令會生成:$ 1 $ i7VbAY.b $ uy5kgtLn8m2daMxOBEz6p。你的Ruby openssl digest命令產生:ebe2294ecd0e0f08eab7690d2a6ee69 –