首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据技术的不同,MD5散列的不同值

根据技术的不同,MD5散列的不同值
EN

Stack Overflow用户
提问于 2015-12-20 07:57:11
回答 1查看 333关注 0票数 2

我想找一种很好的散列方法。这种方法运行良好,但结果与本网站不一致。

代码语言:javascript
复制
(defn hash-string
  "Use java interop to flexibly hash strings"
  [string algo base]
  (let [hashed
        (doto (java.security.MessageDigest/getInstance algo)
          (.reset)
          (.update (.getBytes string)))]
    (.toString (new java.math.BigInteger 1 (.digest hashed)) base))
  )

(defn hash-md5
  "Generate a md5 checksum for the given string"
  [string]
  (hash-string string "MD5" 16)
) 

当我使用这个时,我确实会得到哈希。问题是我正在尝试一个代码出现时的编程练习,它有它自己的字符串散列示例,它提供了与上面的2不同的第三个结果!

如何才能按照人们一直期望的“标准”方式来做md5呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-20 08:41:43

您的MD5操作是正确的;只是没有正确地显示它们。

由于MD5长为32个十六进制字符,因此需要格式化字符串才能正确地将其删除。

换句话说,只需更改这个表达式:

代码语言:javascript
复制
(.toString (new java.math.BigInteger 1 (.digest hashed)) base))

到使用format

代码语言:javascript
复制
(format "%032x" (new java.math.BigInteger 1 (.digest hashed)))))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34379009

复制
相关文章

相似问题

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