1
は、私は次のメソッドを使用するJava SHA256ハッシュを取得するにはJavaとJavaScript同じSHA256の六角
public String getHexFromString(String text){
String hex = "";
try {
byte[] myBytes = text.getBytes("UTF-8");
hex = DatatypeConverter.printHexBinary(myBytes);
} catch (UnsupportedEncodingException ex) {
Logger.getLogger(Utils.class.getName()).log(Level.SEVERE, null, ex);
}
return hex;
}
System.out.print(getHexFromString(testValue));
これの結果は次のとおりです。次の
C5B8E280A0C390EFBFBDCB864C7D65C5A12FC3AAC2A0C3855AC39015C2A3C2BF4F1B2B0BE2809A2CC3915D6C15C2B0C3B008
私は(thisライブラリを使用して)次の操作を行い、JavaScriptで:
var hash = sjcl.hash.sha256.hash("test");
console.log(sjcl.codec.hex.fromBits(hash));
そして結果は次のとおりです。
9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
どのように私はJavaとJavaScriptで同じヘクスを得ることができますか?
私は間違っていますか、それはJavaコードかJavascriptコードですか?
'sha = new String(digest);' - これをしないでください。ダイジェストは任意のバイナリデータです。 'digest'を文字列に変換せずに' getHexFromString'コードを呼び出すのではなく、16進数に変換する必要があります。それは問題のほぼ確実な一部です。 –
@JonSkeetありがとう、これは問題を解決しました:)また、私の他の質問にもっと長い前に答えることに感謝します。何とかあなたは正しい場所にいる正しい人です。 – Alpha2k