2017-09-29 8 views
0

SHA-256を使用して文字列をハッシュしようとしていますが、結果に誤りがあり、特殊文字が含まれています。SHA-256で文字列をハッシュした後に結果が正しくない

コード:

String password = "test"; 
MessageDigest md = MessageDigest.getInstance("SHA-256"); 
byte[] sha256Result = md.digest(password.getBytes(StandardCharsets.UTF_8)); 
String result = new String(sha256Result, StandardCharsets.UTF_8); 

結果文字列:

��Ё�L}e�/��Z���O+�,�]l�� 
+0

返される配列は、ハッシュの生のバイトです.16進数で指定する場合は、[この質問](https://stackoverflow.com/questions)にチェックを入れてください。/9655181 /バイトから配列への変換方法(16進数の文字列) – Haem

答えて

1

ハッシュが正しくprocceedが、結果は、バイトの配列から構成されています。読み取り可能にするには、StringBufferを使用してください。コンバージョンの例として、example on Mkyong's webpageをご覧ください。

StringBuffer sb = new StringBuffer(); 
    for (int i = 0; i < sha256Result.length; i++) { 
    sb.append(Integer.toString((sha256Result[i] & 0xff) + 0x100, 16).substring(1)); 
} 
1

ハッシュの方法は大丈夫だと思います。

関連する問題