Получить UTF-8 байтов из строки в Ruby - PullRequest
0 голосов
/ 04 апреля 2011

У меня есть требование «Выполнить хэширование SHA1 в байтах строки UTF-8».Я не уверен, как получить байты UTF-8.Вот пример того, что я должен получить:

original = "http://www.provider.com/article?query=mysearch&abcd&1300459467&our secret key"
#Perform the sha1 hashing on the UTF-8 bytes of this string, to get ... 
expected_hashed = "99802fec87b6ef1d45bd07f3053d13 6cfcfbdf0b"
#... which is a 160 byte fingerprint.
#You need to then take the 20 byte representation of this string (make sure you're 
#not just taking the hex string), and base 64 encode that.
expected_encoded = "mYAv7Ie27x1FvQfzBT0TbPz73ws="

Получается от original до expected_hashed, что вызывает у меня проблему: я не знаю, как получить UTF-8 байт.Я делаю хэширование SHA1 как Digest::SHA1.digest(unhashed_string), и я не уверен на 100%, что это подходит и в этом случае.: / Я также не уверен в том, каким будет «20-байтовое представление этой строки».

1 Ответ

4 голосов
/ 04 апреля 2011
require 'digest'
require 'base64'
Base64.encode64(Digest::SHA1.digest(original)[0,20])
# => "mYAv7Ie27x1FvQfzBT0TbPz73ws=\n" 
...