2013-04-26 2 views
0

일련 번호를 생성하고 사용자 입력에서 부품을 읽어야하는 응용 프로그램 (iOS 및 Java)을 개발 중입니다. 암호화 된 문자열은 모두이 같은 진수 데이터 (긴 문자열)을 보이는긴 문자열에서 일련 번호 생성

내 출력 : 사용자가 읽고 다시 입력 할 수

"397cf2dbcb034c6c8e63120a211a78f1a628cfa2b36692b5efd3aff93219ca9457bde99765eab793a2f2be183082a702" 

는 분명히 이것은 매우 어렵다. 위의 문자열에서 일련 번호 형식 문자열 (예 : xxxx-xxxx-xxxx-xxxx)을 생성하는 솔루션을 찾고 있습니다. (일련 번호를 해독하고 앱 안의 긴 문자열을 되 찾을 수 있어야합니다.)

+8

암호화 된 문자열의 크기는 48 바이트입니다. 정보를 잃지 않고 16 자의 영숫자로 변환 할 수 있다고는 생각하지 않습니다. –

+0

정확하게, [pigeonhole 원리] (http://en.wikipedia.org/wiki/Pigeonhole_principle) 때문에 불가능합니다. – Jesper

+0

그렇다면이를 달성하기 위해 어떤 종류의 암호화를 채택해야합니까? – Danialzo

답변

0

Base-64 인코딩은 어떻습니까? 그것은 당신이 얻는 것만 큼 좋을 것입니다. 다음은 base-64로 해당 데이터를 인코딩 한 것입니다.

echo "397cf2dbcb034c6c8e63120a211a78f1a628cfa2b36692b5efd3aff93219ca9457bde99765eab793a2f2be183082a702" | xxd -r -p | base64 

OXzy28sDTGyOYxIKIRp48aYoz6KzZpK179Ov+TIZypRXvemXZeq3k6LyvhgwgqcC 
0

큰 해시 함수를 사용해야합니까? 일련 번호 일 뿐이므로 128 비트 해시 같은 작은 것을 사용할 수 있습니까? 16 진수조차도 합리적이며, 64 진수에서는 매우 합리적입니다. base-64를 사용하면 xxxxxx-xxxxxx-xxxx-xxxxxx 형태의 128 비트 키를 얻을 수 있습니다.