이것은 내 코드이며 바이트 인코딩 문제가 있습니다. 일반 텍스트 문자열을 가져 와서 해시 한 다음 결과를 인쇄하려고하면 엉망이됩니다. 예를 들어, plaintext = "hi"의 경우 다음과 같이 출력합니다. hash : ????????? 1? W? p ????? ????? &문자열 인코딩 관련 문제
공용 클래스 HASHME는 {
private String hash;
private String salt;
public HASHME(String plaintext)
{
try {
System.setProperty("file.encoding", "UTF-8");
salt = "salt";
plaintext = plaintext + salt;
byte[] bytesOfPlain = plaintext.getBytes("UTF8");
MessageDigest md = MessageDigest.getInstance("SHA-256");
byte[] hashedBytes = md.digest(bytesOfPlain);
hash = new String(hashedBytes, "UTF8");
System.out.println("hash: " + hash);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
byteshedfyain 및 hashedBytes를 인쇄 할 수 있습니까 – CodeGuy
*** 무엇을 기대합니까 ***, 요청하는 것을 수행하고 있습니다 그것은 인쇄 할 수없는 문자를 출력하기 위해, 여러분이 기대하고있는 바이트를 마술처럼 16 진수로 인코딩하지는 않습니다. 그러나 우리는 전혀 모르고 오직 추측 할 수 있습니다. –
참조 [http://stackoverflow.com/questions/9655181/convert-from-byte-array-to-hex-string-in-java](http://stackoverflow.com/questions/9655181/convert-from- 바이트 배열에서 16 진수 문자열 - 자바) –