require 'digest/sha1'
require 'base64'
Base64.encode64(Digest::SHA1.digest('password'))
# => "W6ph5Mm5Pz8GgiULbPgzG37mj9g=\n"
これにより改行が追加されるため、使用する必要がある場合があります
Base64.encode64(Digest::SHA1.digest('password')).chop
# => "W6ph5Mm5Pz8GgiULbPgzG37mj9g="
@FrederickCheung
または、提案されているように、さらに単純です。
Digest::SHA1.base64digest('password')
編集
SHA-1でエンコードされたパスワードの16進文字列しかない場合は、次のようにします。
require 'base64'
pass = "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8"
Base64.encode64([pass].pack('H*')).chop
# => "W6ph5Mm5Pz8GgiULbPgzG37mj9g="
または、ライブラリをバイパスして、以下base64
にのみ依存することもできpack
ます。
[[pass].pack('H*')].pack('m0')
# => "W6ph5Mm5Pz8GgiULbPgzG37mj9g="