6
我想生成SHA512散列密碼,直接包含在/ etc/shadow文件中,以便與chef's user resource一起使用。通常我會去STDLIB的Digest
庫這一點,但它不會產生正確的格式哈希:使用ruby生成格式化爲/ etc/shadow的SHA512 crypt-style哈希?
ruby-1.9.2-p136 :001 > require 'digest/sha2'
=> true
ruby-1.9.2-p136 :002 > Digest::SHA512.hexdigest('test')
=> "ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff"
,影子文件想要的格式是:
$6$/ShPQNXV$HJnibH9lw01qtYqyJQiBf81ggJB2BGUvKA7.kv39HGCeE.gD4C/SS9zAf5BrwOv3VJzvl99FpHYli9E8jykRC0
事我看了:
- openssl「dgst」模塊返回與.hexdigest相同的格式,其「passwd」模塊不包含SHA512支持。
- String#crypt,但不支持SHA512。 (編輯:這只是對OSX的情況下 - 如果指定「$ 6 $ somesalt」爲鹽現代的Linux發行版都可以)
- ruby-crypt寶石,但是它不支持SHA512
爲了比較,東西返回正確的格式是PHP的crypt,但我寧願不必執行PHP的東西,應該很簡單。
我會跟你的問題合併這一點。 – Blender 2011-03-02 23:20:31
會對本地ruby解決方案感興趣:http://stackoverflow.com/questions/9043017/how-to-convert-php-crypt-function-sha512-to-ruby – c33s 2012-01-28 04:54:54