가변 길이 (10-20 문자)의 편도 해시 영숫자 + 특수 문자 (ascii) 문자열이 필요합니다. 출력 길이는 가변적이어야하지만 최대 25 자, 영숫자 및 대소 문자를 구분하지 않아야합니다.가변 길이 영숫자 출력의 편도 해시
충돌을 생성하고 싶지 않으므로 충돌이 발생하지 않았거나 충돌이 발생했는지 (아직 증명되지 않은) 충돌이 필요합니다.
가변 길이 (10-20 문자)의 편도 해시 영숫자 + 특수 문자 (ascii) 문자열이 필요합니다. 출력 길이는 가변적이어야하지만 최대 25 자, 영숫자 및 대소 문자를 구분하지 않아야합니다.가변 길이 영숫자 출력의 편도 해시
충돌을 생성하고 싶지 않으므로 충돌이 발생하지 않았거나 충돌이 발생했는지 (아직 증명되지 않은) 충돌이 필요합니다.
Here은 다양한 해시 함수에 대한 좋은 자료입니다. 나는 당신이 무엇을 요구하고 있는지 전혀 생각하지 않는다. 그들은 모두 충돌 할 것입니다.
아마도 간단한 암호화 알고리즘을 확인해야 할 것입니다.
char szInput = "hash me", szOutput[20], szKey = "foo";
int i, cbKey = strlen(szKey), cbInput = strlen(szInput);
for (i=0 ; i<cbInput ; ++i)
szOutput[i] = szInput[i]^szKey[i%cbKey]; // xor with a differnt char from the key
당신은 출력을 인식하지 못합니다하고 가역적이기 때문에 실 거예요 충돌 : 여기
당신이 원하는 것을 할 수있는 간단한 암호화 기술입니다.해독하기가 더 어려운 또 다른 방법은 키의 현재 문자를 rand()에 대해 호출해야하는 횟수로 사용하는 것입니다. Xor는 rand()에 대한 마지막 호출의 결과를 사용합니다. rand()는 항상 주어진 시드에 대해 동일한 수의 스트림을 생성하므로 "해시"는 충돌하지 않으며 해독 될 수 없습니다.
해시를 "편도"로 만들려면 키를 버리십시오!
감사합니다. 이것은 좋은 출발점입니다. 나는 당신이 당신의 코멘트에 언급 한대로 잘못된 방향으로 검색하고 있었다고 생각합니다. –
해시의 전체적인 점은 고유 한 식별자로 사용할 수있는 원본 데이터보다 작은 것을 생성하는 것이라고 생각했습니다. 따라서 충돌은 항상 발생합니다. 나는 당신이 해시가 아닌 다른 것을 원한다고 생각합니다. – johnnycrash
@johnnycrash 해시는 더 작아야하지만 해시 크기를 제어하는 것이 유용하지 않다는 것을 의미하지는 않습니다. 블룸 필터는 해시의 길이를 변경해야합니다. –