2010-12-16 2 views
0

질문은 꽤 간단하지만이 답변을 찾을 수 없습니다 ... 기본적으로 내 응용 프로그램은 파일 이름을 md5(time());으로 생성하고 있습니다.시간()을 기준으로 2 개의 동등한 해시를 생성 할 확률은?

이 기법을 사용할 경우 어떤 결과가 발생할 수 있습니까?

P. 내 질문 제목에 정확한 해시가 해시되지 않는다고 했으므로 sha1();, sha512(); 등의 각 유형에 대해 동일한 결과를 생성 할 수있는 기회는 무엇입니까?

미리 감사드립니다.

+1

누군가 시스템 시간을 변경할 수있는 기회는 무엇입니까? – khachik

+0

@khachik : NTP가 이것을 사용하고 있습니다. –

답변

0

평등 결과이 발생할 가능성이있다, 당신은 단순히이 time_t의 전체 범위의 이후 md5(0)의 고유성 ... md5(INT32_MAX)을 확인하여 자신 있음을 확인할 수 있습니다. 내가 입력 한 공간에 충돌이 있다고 생각하지 않습니다.

예측 가능 결과는 또 다른 문제입니다. 공급자를 입력 할 때 time()을 선택하면 초당 고유 해시가 1 초당 86400 개로 제한됩니다.

1

시간이 지나치게 변경 될 수 있습니다. FrankH가 친절하게 언급 한 NTP와 같은 다른 프로세스. 프레임 워크가 허용하는 경우 암호로 안전한 RNG (난수 생성기)를 사용하는 것이 좋습니다.

+0

흥미로운 대답이지만 암호로 안전한 RNG로 묘사 한 내용은 무엇입니까? – jolt

+0

위키 피 디아는이 주제에 관한 좋은 글을 가지고 있습니다 : http://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator . NET은 RNGCryptoServiceProvider에서 이러한 RNG를 제공합니다. –

관련 문제