私はJavaにいくつかのC#を変換しています。Javaのバイト配列のハッシュ
// Return a SHA256 hash of a string, formatted in hex
private static string HashPassword(string password)
{
SHA256Managed hash = new SHA256Managed();
byte[] utf8 = UTF8Encoding.UTF8.GetBytes(password);
return BytesToHex(hash.ComputeHash(utf8));
}
は、Javaでは、私はMessageDigest
でSHA256Managed
を置き換え:
private static String HashPassword(String password)
{
MessageDigest hash = MessageDigest.getInstance("SHA-256");
byte[] utf8 = hash.digest(password.getBytes(StandardCharsets.UTF_8));
return BytesToHex(hash.ComputeHash(utf8)); // ComputeHash?
}
が、MessageDigest
ComputeHash()
を持っていないも、私はそれと同等のを見ていますC#があります。 MessageDigest
はここで正しいクラスですか?もしそうなら、私はComputeHash()
のために何をしますか?私はどんなクラスを使用しないのですか?
BytesToHex
バイト配列を16進文字列に変換します。
あなたは 'MessageDigest'のJavadocを読んだことがありますか?ハッシュを終了させるメソッドは、いくつかのセグメントで計算されたハッシュの 'digest()'、または単一セグメント計算(またはマルチセグメントハッシュの最終セグメント)の 'digest(byte [])'です。 –
私は読んだが、慎重ではなかった。私の間違い。 –