Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在scala中计算字符串的MD5哈希_Java_Scala - Fatal编程技术网

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

Java 在scala中计算字符串的MD5哈希,java,scala,Java,Scala,可能重复: 嗨 我想在scala代码中计算字符串的MD5哈希。除了常规的java.security.MessageDigest方法外,我还可以使用任何scala或java库来快速实现这一点吗 请帮忙 谢谢您可能在这里重新发明了一个非常小的轮子,但只需编写一个函数即可完成您想要的操作:获取字符串,使用MessageDigest,并返回您需要的任何内容(十六进制字符串、字节数组) import java.security.MessageDigest def md5(s: String) = {

可能重复:

我想在scala代码中计算字符串的MD5哈希。除了常规的java.security.MessageDigest方法外,我还可以使用任何scala或java库来快速实现这一点吗

请帮忙
谢谢

您可能在这里重新发明了一个非常小的轮子,但只需编写一个函数即可完成您想要的操作:获取字符串,使用MessageDigest,并返回您需要的任何内容(十六进制字符串、字节数组)

import java.security.MessageDigest

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

md5("Hello")

另外,我不写Scala,但这是可行的,读者可以通过练习将其转换为数组[Byte]以外的任何东西。

为什么不能使用java.security.MessageDigest?只需将其包装在一个公共静态函数中,以减少Scala中的混乱?您不想使用
MessageDigest
net.liftweb.util.Helpers.md5(str)的原因是什么
–当然,只有当您已经在某处使用liftweb时,它才有意义…@Debilski:该函数只调用MessageDigestagain@Goran乔维奇:当然有。它为什么要再次实现该功能?@Debilski摘要中的字节在用于创建字符串时本身就是无意义的字符。有人通常希望将它们格式化为十六进制数字。。。我知道在Clojure中这就像是
(apply str(map#(format“%02x”%)bytes))
@Debilksi我不认为第一个
map(0xFF&&&\code>)是必要的,只需
.map(“%02x”).format(#)).mkString
以下是用所有语言创建md5字符串的一些技巧:我来这里是为了这个:
def md5Hash(text:String):String=java.security.MessageDigest.getInstance(“MD5”).digest(text.getBytes()).map(0xFF&_).map{“%02x”.format(_)}.foldLeft(“”){{{u+}
这里是完整的扩展方法,可以用作“testString”。hash
import java.security.MessageDigest对象StringExtensions{隐式类RichString(val str:String)扩展AnyVal{def hash:String=MessageDigest.getInstance(“MD5”).digest(str.getBytes).map(“%02X”.format())).mkString+“-”+str}}