I have a program (whereby people can download and run on their own computers) that will calculate a couple of unknown values each day. For simplicity sake, let's assume that the calculation is simply
Rand(0, 1). The program will run and the user will get a value e.g.
He will then broadcast this value to anyone interested. He will say "my number today is 0.230957203975!". The problem is that the user can simply lie about the number.
How can we make it such that the user cannot lie? Or rather, how we can detect it if he lies?
I've came up with a solution, but it's sub-par and will be easily defeated. My solution is to broadcast the value
0.230957203975 along with a verification-value calculated as such:
verification_value = SHA2(MD5(RIPEMD(SHA2(HAVAL(GOST(MD5(0.230957203975)))))))
The problem is that the user can examine the machine code, and know the obscure mixture of hash functions used, enabling him to calculate the verification-value himself and lie about the number he had gotten.
I've browsed through Applied Cryptography, but none of the protocols mentioned there seems to have a solution. Is cryptography able to solve this problem?