Public-key cryptosystems based on logarithms and knap- sacks