getパラメータとして送信される文字列からSHA-256チェックサムを生成する必要があります。
見つかった場合 このリンク チェックサムを生成します。
次のようにチェックサムを生成する:
val digest = MessageDigest.getInstance("SHA-256");
private def getCheckSum() = {
println(new String(digest.digest(("Some String").getBytes(StandardCharsets.UTF_8))))
}
次のようなチェックサムを出力します。
*║┼¼┬]9AòdJb:#↓o6↓T╞B5C♀¼O~╟╙àÿG
これを送信するために必要なAPIは、チェックサムが次のようになることを示しています。
45e00158bc8454049b7208e76670466d49a5dfb2db4196
何が悪いのですか?
お知らせ下さい。ありがとう。
.digest
はバイト配列を提供します。
scala> import Java.security.MessageDigest
import Java.security.MessageDigest
scala> import Java.math.BigInteger
import Java.math.BigInteger
scala> MessageDigest.getInstance("SHA-256").digest("some string".getBytes("UTF-8"))
res6: Array[Byte] = Array(97, -48, 52, 71, 49, 2, -41, -38, -61, 5, -112, 39, 112, 71, 31, -43, 15, 76, 91, 38, -10, -125, 26, 86, -35, -112, -75, 24, 75, 60, 48, -4)
16進数を作成するには、String.format
、
scala> String.format("%032x", new BigInteger(1, MessageDigest.getInstance("SHA-256").digest("some string".getBytes("UTF-8"))))
res4: String = 61d034473102d7dac305902770471fd50f4c5b26f6831a56dd90b5184b3c30fc
Linux、Unixのコマンドラインツールでハッシュを確認できます
$ echo -n "some string" | openssl dgst -sha256
61d034473102d7dac305902770471fd50f4c5b26f6831a56dd90b5184b3c30fc
同等ですが、少し効率的です:
MessageDigest.getInstance("SHA-256")
.digest("some string".getBytes("UTF-8"))
.map("%02x".format(_)).mkString
使える DatatypeConverter.printHexBinary
。
何かのようなもの:
DatatypeConverter.printHexBinary(
MessageDigest
.getInstance(algorithm)
.digest("some string").getBytes("UTF-8")))