문제

I am trying to hash my users password which is of string type using SHA-256

I am using SHA-256 to hash the string using the following method

String text = "abc";
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] hash = digest.digest(text.getBytes("UTF-8"));

To convert the btye array to string , I used the following method

String doc2 = new String(hash, "UTF-8");

When i print doc2 to output , i get rubbish

�x����AA@�]�"#�a��z���a�

What am i doing wrong ??? How do i hash a string using SHA-256 and convert it back to string ??

도움이 되었습니까?

해결책

this will pring hex representation of hash

String s = DatatypeConverter.printHexBinary(hash)

you cannot get original string from hash

다른 팁

SHA256 returns pure binary output, with all values from 00 to FF essentially equally likely for each character.

For text output, you'll need to convert it to a text form, like Base64 encoding

byte[] encodedBytes = Base64.encodeBase64("Test".getBytes());
System.out.println("encodedBytes " + new String(encodedBytes));

The only way to go from a cryptographically sound hash (or most hashes, even cryptographically unsound ones) back to the original input is to apply the hash to input after input until you get the same result - that's either the original input, or a collision.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top