如何在Scala和Play Framework中base64编码SHA-1哈希?

时间:2011-06-13 14:57:55

标签: scala base64 playframework sha1 java

我想使用Play Framework在Scala中对生成的SHA-1哈希进行base64编码。

这适用于Scala:

val md = java.security.MessageDigest.getInstance("SHA-1");
println(new sun.misc.BASE64Encoder().encode(md.digest("Foo".getBytes)))

但是在Play Framework中我使用以下方法收到错误:

 type encode is not a member of object sun.misc.BASE64Encoder

使用时:

val md = java.security.MessageDigest.getInstance("SHA-1")
val ha = new sun.misc.BASE64Encoder.encode(md.digest(params.get("Foo").getBytes))

如何使用Scala和Play Framework生成SHA-1哈希和base64编码?

2 个答案:

答案 0 :(得分:18)

你似乎忘记了一对括号:

val md = java.security.MessageDigest.getInstance("SHA-1")
val ha = new sun.misc.BASE64Encoder().encode(md.digest(params.get("Foo").getBytes))

这应该会更好。

答案 1 :(得分:6)

使用Play api更快更干净:

var signature = play.api.libs.Codecs.sha1(md.digest("Foo".getBytes))

播放2.7 (也可能是旧版本)

var signature = play.api.libs.Codecs.sha1("Foo")