我想在我的网页上应用哈希码解决方案,它比MD5和SHA-1更紧凑,因为我想将它们用作JSON哈希表中的键。
或等效:如何将十六进制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中我得到一个浮点值,它是四舍五入的。因此,对于不同的MD5哈希值,我得到相同的36个基值。
答案 0 :(得分:0)
您可以直接返回base64digest
:
require 'digest'
Digest::MD5.hexdigest 'your_page'
#=> "a6b580481008e60df9350de170b7e728"
p Digest::MD5.base64digest 'your_page'
#=> "prWASBAI5g35NQ3hcLfnKA=="
如果您已有十六进制字符串,则此previous answer的评论似乎可以正常工作:
btoa("a6b580481008e60df9350de170b7e728".match(/\w{2}/g).map(function(a){return String.fromCharCode(parseInt(a, 16));} ).join(""))
#=> "prWASBAI5g35NQ3hcLfnKA=="