首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包含超过16个字符的哈希码?

包含超过16个字符的哈希码?
EN

Stack Overflow用户
提问于 2017-01-23 04:34:39
回答 1查看 136关注 0票数 1

我想在我的网页上应用一个比MD5和SHA-1更紧凑的哈希码解决方案,因为我想将它们用作JSON哈希表中的键。

或者等价地:如何将十六进制MD5散列转换为更高的基数系统?越高越好,直到单词可以用作JSON散列中的关键字为止。例如,而不是:

代码语言:javascript
复制
"684591beaa2c8e2438be48524f555141" hexadecimal MD5 hash I would prefer "668e15r60463kya64xq7umloh" which is a base 36 number and the values are equal.

我用Ruby进行了计算:

代码语言:javascript
复制
"684591beaa2c8e2438be48524f555141".to_i(16).to_s(36)
=> 668e15r60463kya64xq7umloh

因为它处理十六进制MD5散列的大十进制值(138600936100279876740703998180777611585)

与JavaScript不同的是,在JavaScript中,我得到一个四舍五入的浮点值。因此,对于不同的MD5散列,我得到相同的36基值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-23 06:23:22

红宝石

您可以直接返回base64digest

代码语言:javascript
复制
require 'digest'

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

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

Javascript

如果你已经有了十六进制字符串,来自这个previous answer的注释似乎可以很好地工作:

代码语言:javascript
复制
btoa("a6b580481008e60df9350de170b7e728".match(/\w{2}/g).map(function(a){return String.fromCharCode(parseInt(a, 16));} ).join(""))
#=> "prWASBAI5g35NQ3hcLfnKA=="
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41795843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档