2017-04-06 2 views
1

15 자의 알파 숫자 코드를 생성하고이를 보호하기 위해 MD5 해시로 저장합니다. 그러나 고유하지 않거나 충돌하는 해시를 가질 수는 없으며 발생하는 경우 삽입하지 않습니다. 필자는 응용 프로그램의 수명 동안 데이터베이스에 삽입 할 코드가 많고 응용 프로그램의 성능을 향상시키기 위해 충돌 자체를 줄이려고합니다.15 자의 알파 숫자 문자열에 대한 MD5의 충돌 확률

질문 : 입력 공간이 36에서 15로 증가한 경우 충돌 가능성은 얼마나됩니까? (36 개는 26 개의 소문자 알파벳과 10 개의 숫자와 15 개를 사용하기 때문에 36 개는 15 개로 코드를 생성하기 때문에).

먼저 코드를 생성하는 방법을 이해하려면 여기를 참조하십시오.

사용 방법 : 쿠폰 코드에 이들을 사용하고 난 데이터베이스가 손상으로부터 자신을 보호하기 위해 그들을 해시합니다.

+0

'발생하면 입력하지 않아도됩니다.'라는 말은 매우 쉽습니다. – chris85

+2

왜 해시 생성을 방해합니까? 원래 15 자 문자열을 고유 키로 사용하십시오. –

+0

15 자의 무작위 문자열을 생성 한 다음 해시하면 해시 값은 문자열 형식의 결과 값을 사용하면 훨씬 작은 알파벳 공간 (0-9A-F)을 갖기 때문에 보안 *을 뺀 것이 아닙니다 *? –

답변

1

보안 해시의 임의의 임의의 충돌이 발생하는 가능성은 무시할 만하다. 즉 0에 가깝다. 심지어 이 깨진보안 해시 인 MD5의 경우에도 마찬가지입니다. 매우 큰 입력 (2^64라고 생각)이 있더라도 충돌을 생성 할 가능성은 여전히 ​​약 1/(2^64)입니다.

충돌이 발생할 확률은 물론 (무작위로 생성되었다고 가정하면) 36^15이 2^128보다 훨씬 작기 때문에 MD5의 출력 크기 (36^15 < (2^6)^15 = 2^90 < < < 2^128). 따라서 해시 값보다 입력 값이 적습니다.

+0

나는 "** broken ** secure hash"*를 읽은 후 조금 씩 웃어야했다. 아마 당신은 * "** 깨진 ** 암호화 해시"*를 의미했습니다. –

+0

그래, "보안 해시"는이 경우 알고리즘의 한 유형이며 알고리즘은 손상 될 수 있습니다.그것은 모순이지만, 이봐, 인생에는 모순이 많다. 가장 좋은 점은 실제로 웃을 수 있다는 것입니다. –

+0

@MaartenBodewes는 "당신의 입력이 충돌 할 가능성은 물론 훨씬 낮습니다"라는 뜻입니까? – FBP