# 智能扑克协议


# 1. SRA协议

假设Alice和Bob要玩一局扑克牌游戏,开局的时候他们都要一副牌(52张)中各抽取5张,那么过程就是这样:

  1. Alice负责洗牌,她首先生成一个长度为52的数组,数组的每个元素表示一张牌,然后用她的加密算法对这些元素进行加密,再把数组顺序打乱(洗牌)之后发送给下Bob
  2. Bob收到这些牌之后并不认识,因为上面都有Alice的锁,所以他只能随机挑出5张牌,用自己的加密算法之后生成送给Alice
  3. Alice收到这5张牌之后用自己的解密函数解密,生成送还给Bob
  4. Bob收到后进行解密,得到作为自己的牌
  5. 最后Bob从剩下的47张牌中随机挑出5张送给Alice,Alice直接解密得到作为她的牌
  6. 发牌结束后双方交换密钥以验证此过程没有作弊