У меня есть требование «выполнить хэширование SHA1 в байтах UTF-8 строки». Я не уверен, как получить байты UTF-8. Вот пример того, что я должен получить:Получить байты UTF-8 из строки в Ruby
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-байтное представление этой строки».
На самом деле понял, UTF-8/хеширования часть: если я делаю 'Digest :: SHA1.hexdigest (unhashed_string)', что дает мне expected_hashed значение. Я все еще не знаю, что такое 20-байтовое представление этого. –
Какая версия Ruby? –
'ruby 1.8.6 (2007-09-23 patchlevel 110) [x86_64-linux]' (это старый сервер) –