- Alice和Bob各自选择一个随机字符串,比如"ljngjkrjgnfdudiudd" 和 "gfdgdfjkherfsfsd"
- Alice随机生成一个抛硬币的结果,比如"tail"
- Bob把自己的随机字符串发送给Alice
- Alice把抛币结果和两个人的随机字符串合并成一个新的字符串,例如"tail ljngjkrjgnfdudiudd gfdgdfjkherfsfsd",并且把这个字符串的hash值"59dea408d43183a3937957e71a4bcacc616d9cbc"发送给Bob
- Alice问Bob: “你猜是head还是tail"?
- Bob猜一个结果,比如"head"
- Alice告诉告诉Bob他猜错了,并且出示完整的字符串
- Alice和Bob通过别的协议协商出各自的RSA密钥对, 满足
- Alice生成两份消息和,一份表示"head",一份表示"tail",这些字符串还要包含双方协商好的特定字符串和随机字符串,以满足后期的验证
- Alice使用自己的公钥加密这两份消息,得到,并且以随机的顺序发给Bob
- Bob无法识别消息的内容,随机选择其中的一个消息,并且用自己的公钥加密得到,然后发送给Alice
- Alice无法识别消息中的内容,用自己的私钥解密该消息,得到,然后发送回Bob
- Bob用自己的私钥解密消息,得到,于是Bob得到了抛币的结果并发送给Alice
- 双方交换各自的密钥对,以验证过程双方有没有欺诈
- Alice选择两个质数,计算,然后将发送给Bob
- Bob随机一个数字,计算,并发送给Alice
- Alice求解同余方程,得到两对解,分别是
- Alice猜测Bob所随机的数字属于哪组解,并发送该组解给Bob
- Bob根据结果判断,如果或者,表示Alice猜对了,否则就是猜错了
- Bob把结果告诉Alice,并出示
- Alice把告诉Bob验算
- Bob随机选择两个质数,满足, 计算发送给Alice
- Alice随机选择一个数字, 满足, 计算,把发送给Bob
- Bob猜测的数值,并且把发送给Alice
- Alice向Bob出示
- Bob验证,并向Alice出示