【问题标题】:How to base64 encode a SHA-1 hash in Scala and Play Framework?如何在 Scala 和 Play 框架中对 SHA-1 哈希进行 base64 编码?
【发布时间】:2011-09-13 23:59:43
【问题描述】:

我想使用 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 编码?

【问题讨论】:

    标签: scala base64 playframework sha1 java


    【解决方案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))
      

      Play 2.7(也可能是旧版本)

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

      【讨论】:

      • 只是play.api.libs.Codecs.sha1("Foo".getBytes)
      • @Intracer 我根据您的评论修复了响应 - 现在更简单了;)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-22
      • 1970-01-01
      • 1970-01-01
      • 2017-07-18
      • 1970-01-01
      • 2018-09-10
      相关资源
      最近更新 更多