Хэш функции
Заранее благодарен
Примеров море! Правда я натолкнулся на кучу исходников, которые давали разный ЦРЦ (только им занимался)
После просмотра 5 собрал один, который давал ЦРЦ такой же как и в винраре.
Код:
#define poly 0xEDB88320
#define word unsigned short
#define dword unsigned long
#define byte unsigned char
dword CRC32(byte *buff,dword len);
dword doCRC32(byte *buff, dword len, dword res);
void InitCRC32();
dword table[256];
dword CRC32(byte *buff,dword len)
{
return doCRC32(buff,len,0xFFFFFFFF) ^ 0xFFFFFFFF;
}
dword doCRC32(byte* buff, dword len, dword res){
while (len--) res = (res>>8) ^ table[(byte)res ^ *buff++];
return res;
}
void InitCRC32()
{
dword i,j,mask;
for ( i=0;i<256 ;i++){
mask = 0xFFFFFF00 + i&0xFF;
for ( j=0; j<8; j++ ){
if ( mask & 1 ){
mask >>= 1;
mask ^= poly;
}
else mask >>= 1;
}
table[i&0xFF] = mask;
}
}
#define word unsigned short
#define dword unsigned long
#define byte unsigned char
dword CRC32(byte *buff,dword len);
dword doCRC32(byte *buff, dword len, dword res);
void InitCRC32();
dword table[256];
dword CRC32(byte *buff,dword len)
{
return doCRC32(buff,len,0xFFFFFFFF) ^ 0xFFFFFFFF;
}
dword doCRC32(byte* buff, dword len, dword res){
while (len--) res = (res>>8) ^ table[(byte)res ^ *buff++];
return res;
}
void InitCRC32()
{
dword i,j,mask;
for ( i=0;i<256 ;i++){
mask = 0xFFFFFF00 + i&0xFF;
for ( j=0; j<8; j++ ){
if ( mask & 1 ){
mask >>= 1;
mask ^= poly;
}
else mask >>= 1;
}
table[i&0xFF] = mask;
}
}
Код не совсем пхп, но смотрится красивее :)
Но все-равно спасибо! :)
http://www.torry.net/pages.php?id=1548 - CRC32
http://www.torry.net/pages.php?id=519 - MD5
Был еще фриварный пакет chipher с реализацией кучи хэш- и криптоалгоритмов.
А ссылочку на пакет [COLOR="Red"]chipher[/COLOR] не кинешь?
Буду очень благодарен!!!
_http://www.torry.ru/vcl/security/strong/chipher.zip