문자열을 "소화"하는 방법을 찾고 있지만 항상 동일한 32 (또는 64) 바이트의 긴 값 (16 진수 문자열 또는 일반 문자)을 반환합니다.항상 동일한 값을 반환하는 문자열에 대한 안티 다이제스트 연산
std::string digest(const std::string& input)
{
std::string result = "";
// do something with the input string, update result accordingly
return result;
}
을하고 조금 더 세부 정보 : 다음과 같은 코드는 않습니다 I (1 각 다른 문자열은 다르지만 항상 같은를 반환하는 고전이하는 기능을 소화 무엇인지 정확히 반대합니다 1) 값. 각 문자열에 대해 동일한 값 (n을 1로)을 반환하는 함수가 필요합니다.
명백히 "쉬운"솔루션은 항상 동일한 상수 result
을 반환합니다. 해결책으로 간주되지 않습니다. 코드는 실제로 입력 문자열을 소화해야하고 연산 결과로 result
을 빌드해야합니다.
digest ("fox") == digest ("whale")
것은 사실 일 것이다.
또는 수학적으로 말하면 : ∀ A 및 B에 대한
경우 A = B = "다이제스트 (a) == 다이제스트 (b)!. 그래서 나는이 소위 말하는 소화를 불렀다.
SHA 제품군 또는 MD5 암호화 알고리즘을 사용해 보셨습니까? –
아니요, 실제 다이제스트 기능입니다. 서로 다른 문자열로 피드하면 다른 값을 반환합니다. 나는 항상 다른 문자열에 대해 동일한 것을 반환하는 것을 원한다. – fritzone
* 다른 문자열에 대해 항상 같은 것을 반환하려면 * [XKCD 221 - 난수] (http://www.xkcd.com/221/)를 참조하십시오. –