2017-01-22 15 views
1

Я хотел бы применить решение хеш-кода на моей веб-странице, которое более компактно, чем MD5 и SHA-1, потому что я хочу использовать их как ключи в хэш-таблице JSON.Код хэша, который содержит более 16 символов?

Или, что эквивалентно: как преобразовать шестнадцатеричный MD5-хэш в систему с более высоким базовым номером? Чем выше, тем лучше, пока слова не будут использоваться в качестве ключей в хеше JSON. Например, вместо:

"684591beaa2c8e2438be48524f555141" hexadecimal MD5 hash I would prefer "668e15r60463kya64xq7umloh" which is a base 36 number and the values are equal. 

Я сделал расчет в Ruby:

"684591beaa2c8e2438be48524f555141".to_i(16).to_s(36) 
=> 668e15r60463kya64xq7umloh 

Поскольку он обрабатывает большое значение десятичного шестнадцатеричного хэша MD5 (138600936100279876740703998180777611585)

В отличие от JavaScript, в JavaScript Я получаю значение float, которое округлено. Поэтому я получаю то же самое 36-базовое значение для разных хэшей MD5.

ответ

0

Рубин

Вы можете вернуть base64digest непосредственно:

require 'digest' 

Digest::MD5.hexdigest 'your_page' 
#=> "a6b580481008e60df9350de170b7e728" 

p Digest::MD5.base64digest 'your_page' 
#=> "prWASBAI5g35NQ3hcLfnKA==" 

Javascript

Если у вас уже есть шестнадцатеричная строка, комментарий от этого previous answer, кажется, работает нормально:

btoa("a6b580481008e60df9350de170b7e728".match(/\w{2}/g).map(function(a){return String.fromCharCode(parseInt(a, 16));}).join("")) 
#=> "prWASBAI5g35NQ3hcLfnKA==" 
+0

Я вижу, но я хочу получить расчет на веб-странице с помощью JavaScript. – Konstantin

+0

Я не был уверен, так как вы отметили «Ruby» и показали код Ruby. –

+0

Thx, вот что я хочу, у меня уже есть библиотека md5.js для вычисления хэшей md5. – Konstantin

 Смежные вопросы

  • Нет связанных вопросов^_^