당신은 거기에 4 가지 또는 5 가지의 다른 질문을했으며 상황에 따라 모호한 용어를 사용했습니다. 질의 응답 사이트에서 한 번에 하나의 명확한 질문을하는 것이 좋습니다.
- 왜 gzip은 일반 해시 알고리즘 대신 CRC를 사용합니까?
CRC는 오류 검출에 우수하며 비교적 빠른 계산을합니다. 입력 비트는 CRC에 잘 분산되어 있으며, 양호한 버스트 오류 검출 능력을 갖는다. 그래서 이유가 있습니다. "일반 해시 알고리즘"(해시 테이블의 경우 또는 암호 학적으로 강력한 경우)이 의미하는 바가 명확하지 않습니다. 어쨌든, 목적은 파일의 룩업 테이블을 만드는 것이 아니며 데이터에 서명하는 것이 아닙니다. 암호 해시를 넣는 데 아무런 가치가 없습니다. MD5 또는 SHA-2를 gzip 파일에 저장합니다. 누군가가 단순히 데이터 및을 해시로 변경할 수 있기 때문입니다. 누군가가 생성 할 수있는 해시는 다른 채널을 통해 해시를 얻는 경우에만 유용합니다.
- 디지털 서명과 코드 워드의 차이점은 무엇입니까?
"코드 워드"를 사용하면이 링크에서 CRC를 의미한다고 생각합니다. CRC는 데이터의 무결성을 검사하기 위해 하드웨어 및 소프트웨어 응용 프로그램에서 모두 구현되는 신속하게 계산 된 오류 검사 코드입니다. 문맥에서, 나는 당신이 디지털 서명을 말할 때 암호화 해시를 의미한다고 생각합니다.암호화 해시는 지정된 해시 값을 사용하여 메시지를 만드는 것을 매우 어렵게 만들도록 설계된 단방향 함수입니다. CRCs는 정반대입니다. 선형 함수이므로, modify a message to have any given CRC은 꽤 쉽습니다. 암호화 해시에는 실수로 충돌 할 확률을 효과적으로 없애기 위해 일반적으로 CRC보다 많은 비트가 있습니다. 그러나 단방향 및 다수 비트는 암호화 해시를 생성하기 위해 훨씬 더 계산 집약적으로 만듭니다.
- 파이썬 zlib 문서를 읽는 동안 발견 한 흥미로운 점 중 하나는 일반적인 해시 알고리즘으로 CRC를 사용해서는 안된다는 주장입니다.
맞습니다. CRC는 입력 비트를 값에 매우 잘 분배하고 해시로 성공적으로 사용할 수 있지만 it fails certain tests that you might like a hash algorithm to pass입니다. 알고리즘이 키로 해시 테이블을 만들도록하려면 hash algorithm designed for that purpose을 사용하십시오. 그게 전부라면, 해시는 암호 일 필요가 없으며 암호화해서는 안됩니다. 빠른 것이 더 중요합니다.
- 일반 해시 알고리즘이 아닌 경우 CRC의 핵심은 무엇입니까?
CRC는 오류 검출 및 수정 알고리즘을 제공하는 coding theory의 결과 중 하나입니다. CRC의 목적은 오류 감지입니다.
- 포인트가 평등을 확인하지 않습니까?
여기에 어떤 평등성이 언급되는지는 분명하지 않습니다. 어떤 경우이든 CRC의 요점은 무결성을 확인하는 것입니다. 전송중인 스트림의 부주의 한 손상을 거의 감지하는 스트림에 중복 정보를 제공합니다.
일부 알고리즘은 광범위한 입력에 대해 다른 알고리즘보다 충돌이 적습니다. 나는 그 이유를 언급 한 것으로 들었다. –
그냥 일반적인 오류 완화 내가 비록 – chris
고려해야 할 한 가지 : GZIP가 정의되었을 때 광범위하게 사용할 수없고 이해되지 않는 일반 해시 알고리즘. 또한 CRC 계산은 훨씬 빠르며 단 하나의 레지스터 만 필요합니다. – PMF