2012-11-27 2 views
0

주어진 문자열에 대해 md5를 만들 수있는 방법이 있습니다. md5에는 문자 만 지정해야하며, md5의 길이는 java를 사용하여 정의 된 코더 여야합니다.지정된 문자 집합 및 지정된 길이의 md5 문자열을 사용하여 java에서 md5를 만드는 방법은 무엇입니까?

예 :

이 질문의

가정 해 텍스트가 MD5를 만들 수있는 문자열하고있다 "//! \을 # $ %의^& *() _- = + |" 이 테스트의 시작과 끝에서이 캐릭터들은 md5를 가질 필요가 있습니다.

예상 출력 :

sdki544k54353453 (영숫자와 16 길이 문자열)

+0

입력 및 출력 예제를 포함 할 수 있습니까? – Vulcan

+0

가능한 [Java에서 파일의 MD5 체크섬 얻기] (http://stackoverflow.com/questions/304268/getting-a-files-md5-checksum-in-java) –

+0

나는이 게시물을 보지만 내 질문은 어떻게하면 영숫자와 길이가 지정된 md5를 찾을 수 있습니까? 구체적으로 대답하면 – Badr

답변

3

거기 문자열 주어진

첫 번째 문제에 대한 MD5를 만들 수있는 방법 : 당신 문자열을 바이트로 변환하는 데 사용할 인코딩을 정의해야합니다. MD5는 바이너리 데이터 (텍스트가 아님)에서 작동합니다. 따라서 문자열을 바이트로 변환 한 다음 16 바이트를 해시로 다시 해시 할 필요가 있습니다. 당신이 공간의 비트를 저장하려는 경우

은 MD5 만 지정해야한다는 문자는 영숫자

글쎄, 그건 가장 쉽게 진수를 이루어, 또는 base32 말할.

도 MD5의 길이 부호화기 고정 자바

이진 해시 된 데이터의 크기를 사용하여 정의한다 - MD5 항상 128 비트 (16 바이트)를 생성한다. 길이를 줄이려면 해시가 효과적이지 않게 데이터를자를 필요가 있습니다. 물론 원하는 길이가 보다 길면보다 길어야합니다.

16 바이트는 32 문자로 16 진수로 인코딩되거나 26 문자로 base32로 인코딩됩니다. Base64는 22 문자 만 필요하지만 적어도 2 개의 영숫자가 아닌 문자가 필요합니다. (Digits + az + AZ는 62자를 제공하며, base64는 보통 64자를 필요로합니다. 보통 길이를 아는 경우 생략 할 수 있습니다.)

요구 사항을 자세히 설명 할 수 있다면 더 많은 것을 도울 수는 있지만 근본적으로 MD5는 고정 크기의 해시입니다.

+0

감사합니다. 작동합니다. – Badr

관련 문제