2017-03-28 1 views
1

SHA1을 사용하여 해시 된 문자열이 있습니다. 나는이 문자열을 문자열과 같은 암호로 변환하고 싶습니다. 약 8 자의 문자를 위, 아래 문자 및 특수 문자로 의미합니다.해시 문자열을 문자열과 같은 암호로 변환하십시오.

+1

SHA-1 해시 함수의 출력 크기는 160 비트입니다. 8 자의 암호는 48-64 비트 엔트로피 사이에 있습니다. 해시를 "암호"로 어떻게 줄일 계획입니까? 왜 이걸하고 싶어? 이게 가역적일까요? 달성하려는 것을 이해하고 도움을주는 이유를 이해해야합니다. –

+1

Base64는 처음 6 개의 SHA1 바이트를 인코딩합니다. 그러나 사용법에 따라 이것은 끔찍하게 불안정 할 수 있습니다. – zaph

+1

보안/인코딩에 관한 문제이기 때문에이 질문을 주제와 관련이 없으므로 security.SE 사이트에서 더 자세히 질문하십시오. –

답변

2

base-85을 사용하여 해시의 마지막 8 바이트를 10 개의 ASCII 문자로 인코딩 할 수 있습니다.

원래 해시 된 문자 시퀀스 (예 : 단어 또는 구 또는 일반적으로 사용되는 암호)를 예측할 수있는 경우 10 자 문자열에서 매우 쉽게 추측 할 수 있습니다. 원래 문자열이 무작위로 생성 되더라도 동일한 잘린 해시를 생성하는 다른 문자열을 찾는 것은 비교적 쉽습니다.

즉,이 기술을 보안이 필요한 항목에 사용하면 안됩니다.

+1

인간이 결과 [Base58] (https://en.wikipedia.org/wiki/Base58)를 입력하는 것이 더 나은 해결책 인 경우, 다음과 유사한 모양의 글자는 생략됩니다 : 0 (영자), O (대문자 O), I (대문자 I) 및 I (소문자 L)와 영숫자가 아닌 문자 + (더하기) 및/(슬래시)가 포함됩니다. Base85는., -, :, +, =, ^,!, /, *,?, &, <, >, (,), [], {,}, @ 등의 일반 컴퓨터 사용자에게는 훨씬 혼란스러운 문자가 있습니다. , %, $, #. – zaph

+0

"은 상위 8 자, 하위 8 자, ** 및 특수 문자 **를 의미합니다." – erickson

+0

대문자 i와 소문자 L 인 빠른 "Il"? Base85는 사람들이 들어갈 수있는 것이 아니며, Base58은이고 is입니다. 하지만 다시 OP는 인간의 입장에서 등장 인물을 사용하지 않을 것입니다. – zaph

관련 문제