在scala中计算字符串的MD5哈希值

jam*_*mes 34 java scala

可能重复:
在Java中生成MD5哈希

嗨,

我想在我的scala代码中计算字符串的MD5哈希值.除了常规的java.security.MessageDigest方法之外,还有什么scala或java库可以用来快速完成吗?

请帮助谢谢

Joh*_*tie 73

你可能会在这里重新发明一个非常小的轮子,但只需编写一个函数来做你想做的事情:取一个字符串,使用MessageDigest,并返回你需要的任何东西(十六进制字符串,字节数组).

import java.security.MessageDigest

def md5(s: String) = {
    MessageDigest.getInstance("MD5").digest(s.getBytes)
}

md5("Hello")
Run Code Online (Sandbox Code Playgroud)

PS我不写Scala,但这是有效的,它留给读者练习,把它变成除了数组之外的任何东西[Byte]

  • @Debilksi我不认为第一个`map(0xFF&_)`是必要的,只是`.map("%02X".format(_)).mkString` (25认同)
  • 我来这里寻找:`def md5Hash(text:String):String = java.security.MessageDigest.getInstance("MD5").digest(text.getBytes()).map(0xFF&_).map {" %02x".format(_)}.foldLeft(""){_ + _}` (9认同)
  • @Debilski在用于创建字符串时,摘要中的字节是无意义的字符本身.有人通常想把它们格式化为十六进制数字......我知道在Clojure中这就像`(apply str(map#(format"%02x"%)bytes))` (3认同)
  • `new String(md5("Hello"))` (2认同)
  • 以下是使用所有语言创建md5字符串的一些要点:https://gist.github.com/amscotti/2467512 (2认同)
  • 这是完整的扩展方法,可以用作"testString".hash`import java.security.MessageDigest对象StringExtensions {implicit class RichString(val str:String)extends AnyVal {def hash:String = MessageDigest.getInstance("MD5") .digest(str.getBytes).map("%02X".format(_)).mkString +" - "+ str}}` (2认同)