包含超过 16 个字符的哈希码?
Hash code which contains more than 16 characters?
我想在我的网页上应用一个比 MD5 和 SHA-1 更紧凑的哈希码解决方案,因为我想将它们用作 JSON 哈希 table 中的键。
或等价地:如何将十六进制 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 基值。
Ruby
您可以直接 return 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=="
我想在我的网页上应用一个比 MD5 和 SHA-1 更紧凑的哈希码解决方案,因为我想将它们用作 JSON 哈希 table 中的键。
或等价地:如何将十六进制 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 基值。
Ruby
您可以直接 return 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=="