#include <string>
#include <iostream.h>
#include <iomanip.h>
#define BASE 65521
unsigned long adler32(unsigned char *buf, int len)
{
unsigned long adler=1;
unsigned long s1 = adler & 0xffff;
unsigned long s2 = (adler >> 16) & 0xffff;
int i;
for (i = 0; i < len; i++)
{
s1 = (s1 + buf[i]) % BASE;
s2 = (s2 + s1) % BASE;
}
return (s2 << 16) + s1;
}
int main()
{
while(1)
{
unsigned long Temp=0;
int len;
unsigned char *str;
str = (unsigned char *) malloc(180000);
cout<<"adler32 checksum:";
cin>>str;
len=strlen((const char*)str);
Temp=adler32(str,len);
cout<<hex<<Temp<<endl;
}
return 0;
}