Как base64 кодирует хэш SHA-1 в Scala и Play Framework?

Я хотел бы, чтобы 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?

Ответ 1

Кажется, вы забыли пару круглых скобок:

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

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

Ответ 2

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

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