2016-09-22 2 views
2

자바 3 개의 문자열이 있습니다. 예를 들어 보겠습니다.Java는 md5로 문자열을 변환합니다.

String test = "Hi, "; 
String test1 = "this is "; 
String test2 = "Java programming!"; 

나는 3 개의 문자열을 결합하여 md5 형식으로 변경하려고합니다. 내가 어떻게 할 수 있니? 한 문자열에 MessageDigest 클래스를 사용하지만 md5로 변경하기 전에 3 개의 문자열을 추가하는 방법을 알지 못합니다. 그리고 md5를 문자열로 바꾸고 싶습니다. 외부 라이브러리가 필요합니까?

+0

md5는 되돌릴 수 없습니다. 그것은 암호화 또는 인코딩이 아닙니다. * 해시 *입니다. 그리고 당신의 현을 연결하십시오. – RealSkeptic

답변

2

MD5는 이 아니며 형식 또는 암호화 알고리즘입니다.

MD5는 해시 함수입니다. 즉, 짧은 텍스트를 긴 텍스트로 변환 할 수 있습니다. 아주 짧은 입력의 경우에는 분명히 손실이 발생합니다. 일반적으로 MD5에서 일반 텍스트로 돌아 가지 않습니다.

+0

오케이, 그럼 질문이 있습니다. 3 문자열을 해시 코드로 변환합니다. md5가 다른 문자열에 대해 중복 된 문자를 생성 할 수 있습니까? , 만약 내가 천 개의 문자열을 변환하면. –

+0

예, MD5는 두 개의 다른 입력에 대해 동일한 출력을 생성 할 수 있습니다. 그러나 두 개 (또는 심지어 천 개)의 서로 다른 임의의 입력에 대해이 문제가 발생할 확률은 매우 낮습니다. –

2

잘되지 MD5되는 반전 정말 가능으로 -

  • 하나 개 이상의 문자열 (. 해시 충돌라고 함)는 설계
  • 같은 MD5를 제공하는 하드있을 수 있습니다 " 역순 "

역순 MD5를 제공하는 많은 웹 사이트를 보았을 것입니다 (-, option-2). 이 웹 사이트는 이미 사용 된 "문자열과 MD5"의 매핑을 저장합니다 (따라서 복잡한 문자열을 사용하는 경우 원본 문자열을 추론 할 수 없습니다).

은 파트로 다시 이동 - 1

MessageDigest는 자바에서 특정 문자열의 MD5를 계산하는 데 사용할 수 있습니다. 그것의 사용은 매우 간단하다 -

방법 1 - -

 String testString="someText"; 
     MessageDigest md = MessageDigest.getInstance("MD5"); 
     byte[] messageDigest = md.digest(testString.getBytes()); 
     BigInteger number = new BigInteger(1, messageDigest); 
     String hashtext = number.toString(16); 

그래서 문제에 당신이 해시 생성하는 방법을 달려 마침내

StringBuilder simpleString=new StringBuilder(test); 
simpleString.append(test1); 
simpleString.append(test2); 
String testString=simpleString.toString(); 

과 - 당신은 우리가 가질 수있는 질문으로 위에 정의 된 메소드를 - testString과 같이 입력하십시오.

웨이 2 - MD5의 MD5를 사용하여 체크섬을 확보 할 것을 제안합니다.

Output = MD5(MD5(test)+MD5(test1)+MD5(test2)) 

당신은 3 개 문자열에 대한 무차별 대입 공격을 만드는 시도 할 수 있습니다. 이 경우 영문자 (A-Z, a-z)와 숫자 (0-9) 만 허용된다고 가정하면 "623 (238,328) 조합 만"입니다.

희망이 있습니다. :)

관련 문제