C, 87 bytes [cracked]
This is the complete program; no wrapper required. Accepts binary input via stdin, and outputs a hexadecimal hash to stdout.
c;p;q;main(){while((c=getchar())+1)p=p*'foo+'+q+c,q=q*'bar/'+p;printf("%08x%08x",p,q);}
This only calculates a 64-bit hash, so I'm taking a bit of a gamble here.
In case anyone's wondering, the two constants 'foo+'
and 'bar/'
are the prime numbers 1718578987 and 1650553391.
Examples:
Ignores leading zeroes:
echo -ne '\x00\x00\x00\x00' |./hash
0000000000000000
Single-byte inputs:
echo -ne '\x01' |./hash
0000000100000001
echo -ne '\xff' |./hash
000000ff000000ff
Multi-byte inputs:
echo -ne '\x01\x01' |./hash
666f6f2dc8d0e15c
echo -ne 'Hello, World' |./hash
04f1a7412b17b86c