我想在我的网页上应用一个比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基值。
发布于 2017-01-23 06:23:22
红宝石
您可以直接返回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=="https://stackoverflow.com/questions/41795843
复制相似问题