2014-04-02 1 views
1

내가 SHA-256SHA-256

내가 다음 method

를 사용하여 문자열을 해시 SHA-256을 사용하고 사용하여 문자열 형식의 내 사용자 암호를 해시하려고 사용하여 문자열을 해시하는 방법
String text = "abc"; 
MessageDigest digest = MessageDigest.getInstance("SHA-256"); 
byte[] hash = digest.digest(text.getBytes("UTF-8")); 

문자열에 btye 배열을 변환하려면, 나는 다음과 같은 method

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

내가 인쇄 doc2 (T)를 사용 출력, 쓰레기가납니다

�x����[email protected]�]�"#�a��z���a� 

내가 뭘 잘못하고 있니? SHA-256을 사용하여 문자열을 해시하고 다시 문자열로 변환 하시겠습니까 ??

+0

해싱은 일방적 인 기능입니다. 해시에서 암호를 다시 가져 오려는 의도가 있다면 불가능합니다. – anonymous

답변

7

해시

String s = DatatypeConverter.printHexBinary(hash) 

의 의지 프링의 진수 표현 당신은

1

SHA256 각 문자에 대한 본질적으로 동등 가능성이 FF 00의 모든 값으로, 순수 바이너리 출력을 반환 해시에서 원래 문자열을 얻을 수 없습니다.

텍스트 출력에 대한

, 당신은 다시 Base64 encoding

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

암호 학적으로 소리 해시 (또는 대부분의 해시, 심지어 암호 불건전 한 것들)에서 갈 수있는 유일한 방법처럼 텍스트 형식으로 변환해야합니다 원래 입력에 해시를 적용하면 동일한 결과 (원본 입력 또는 충돌)가 될 때까지 입력 후 입력에 해시를 적용하는 것입니다.