Это мой код, у меня проблемы с байтовой кодировкой. Когда я получаю строку открытого текста и хешую, и пытаюсь распечатать результат, он становится испорченным. Например, для 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();
}
}
Вы можете распечатать bytesOfPlain, а также hashedBytes – CodeGuy
*** что вы ожидаете ***, он делает то, что вы просите он, печатает непечатаемые символы, он не будет волшебным образом кодировать байты, что, вероятно, то, что вы ожидаете, но мы понятия не имеем и можем только догадываться. –
См. [Http://stackoverflow.com/questions/9655181/convert-from-byte-array-to-hex-string-in-java](http://stackoverflow.com/questions/9655181/convert-from- byte-array-to-hex-string-in-java) –