如何使用Scala生成哈希码

时间:2014-08-18 06:19:22

标签: scala hash

我想为Scala 2.11中的字符串生成非加密哈希码

我在网上找了一个名为MurmurHash3的课程但是当我尝试使用它时,我得到了一个非常无益的class MurmurHash3 in package hashing cannot be accessed in package scala.util.hashing

为什么我无法访问该软件包?还有其他选择吗?

3 个答案:

答案 0 :(得分:4)

类MurmurHash3是私有的

private[hashing] class MurmurHash3

你需要什么,是一个伴侣对象MurmurHash3。不要试图实例化它。只需使用它的方法,就像在静态类

中一样
util.hashing.MurmurHash3.stringHash("")

答案 1 :(得分:1)

MurmurHash3的公开实例对象不是

Welcome to Scala version 2.11.0 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_65)
Type in expressions to have them evaluated.
Type :help for more information.

scala> scala.util.hashing.MurmurHash3.arrayHash(Array(10,20,30))
res0: Int = -864874452

答案 2 :(得分:0)

您可以尝试使用java security.MessageDigest在scala中生成哈希码。它将为相同的输入字符串生成相同的哈希码。我在Scala 2.11.x

中使用了这个
import java.security.MessageDigest

def getMD5Hash(fileName: String): String = {
    val msgDigest:MessageDigest = MessageDigest.getInstance("MD5")
    val MD5Hash = msgDigest.digest(fileName.getBytes()).map(0xFF & _).map { "%02x".format(_) }.foldLeft("") {_ + _}
    MD5Hash
}

希望它有帮助!