Как base64 кодировать хэш SHA-1 в Scala и Play Framework? - PullRequest
12 голосов
/ 13 июня 2011

Я бы хотел, чтобы base64 кодировал сгенерированный хэш SHA-1 в Scala, используя Play Framework.

Это работает для меня в 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))

Как я могу сгенерировать хэш SHA-1 и кодировать base64 с помощью Scala и Play Framework?

Ответы [ 2 ]

18 голосов
/ 13 июня 2011

Вы, кажется, забыли пару скобок:

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

Это должно работать лучше.

6 голосов
/ 17 марта 2015

Быстрее и чище с Play api:

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

Play 2.7 (возможны также более старые версии)

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