CRC32는 아마도 필요에 따라 적당 할 것입니다. 이것은 this question에서 논의되었습니다.
해시 프리미티브를 잘라내는 데있어 많이 사용되는 응용 프로그램은 키를 생성하는 데 사용되는 SSL/TLS Pseudo Random Function (PRF)입니다. HMAC, 씨앗 및 레이블을 사용하여 여러 번 해싱 한 다음 필요로하는 바이트 수만큼 잘라내서 필요한만큼의 바이트를 생성합니다.
하지만 특정 질문에 관해서는
, 당신은 INT32의에 해시의 출력을 읽고 당신이 편집증 환자 인 경우 다음 그들을 함께에 xor 수 :
static void Main()
{
int xorCrc = GetHashedCrc(new SHA1Cng(), new byte[] {0xDE, 0xAD, 0xBE, 0xEF});
}
private static int GetHashedCrc(HashAlgorithm algorithm, byte[] bytesToHash)
{
byte[] hash = algorithm.ComputeHash(bytesToHash);
int totalInt32s = hash.Length/sizeof(int);
int result = 0;
for(int i = 0; i < totalInt32s; i++)
{
int currentInt = BitConverter.ToInt32(hash, sizeof(int)*i);
result = result^currentInt;
}
return result;
}
전체 20 자 SHA-1 해시를 저장할 수 없다는 것을 어떻게하고 있습니까? 또한 CRC32는 해시가 아니므로 전송 오류 감지 메커니즘이므로 오류 검색이 필요한 경우 해시는 실제로 그렇게 할 방법이 아닙니다. – jmucchiello
4 바이트 해시는 공간을 절약하기 위해 선택되었습니다. 해시는 모니터링 장치에서 오는 체크섬 데이터 블록에 사용되며 그 중 수백만 개가있을 수 있습니다. 아마 모든 것을 저장하는 것이 문제가되지 않을 것입니다. 당신은 재미있는 말을했습니다. "전송 오류 탐지 메커니즘"과 해시의 차이점은 무엇입니까? 암호 강도 (이 특정 응용 프로그램은 필요하지 않습니다)? – raven
뻔뻔한 셀프 플러그인 : cmdhashgen은 CRC32를 지원하며 HashAlgorithm에서 파생되므로 다른 사람들과 같은 방법으로 사용할 수 있습니다. Crc32.cs를 확인하십시오. http://cmdtools.codeplex.com/ –