Может быть, все, что вам нужно, это Digest :: MD5, который будет генерировать шестнадцатеричные числа любой строки, которую вы ей дадите. В то время как Ruby 1.8 несколько тонок в своем различии между наборами символов ISO-Latin1 и UTF-8, Ruby 1.9 обеспечивает гораздо больший контроль, включая преобразование. Однако если строка указана как UTF8, Ruby 1.8 обычно оставляет ее в покое, рассматривая ее как простой поток байтов.
require 'digest/md5'
def encode_password(password)
Digest::MD5.hexdigest(password).upcase
end
# Example:
puts encode_password('foo bar')
# => "327B6F07435811239BC47E1544353273"