密码学协议举例(四):秘密数字的比较

本文通过一个实例展示了如何使用密码学协议让两位女士在不透露各自年龄的情况下,比较她们年龄的大小。利用RSA加密和模运算,实现了在保护隐私的同时完成比较任务。
摘要由CSDN通过智能技术生成

    让我们来看一个很实用的问题:A和B两位女士希望知道她们俩哪个年龄大,但又都不愿意透露自己的年龄。有什么方法能够让她们在不泄露年龄的情况下比较出年龄大小呢?我们假设双方都是诚实可信的。她们会严格遵守协议并且不会撒谎。她们唯一不希望做的仅仅是泄露自己的年龄。
    不妨设A的年龄为a,B的年龄为b。为简便起见,假设这两个数都是21到30之间的整数。下面这个协议可以让双方比较出a和b的大小,而不透露a和b的实际值。这个协议也不需要第三方的参与。
    协议开始前,B生成一对RSA钥匙,例如n=3233, e=17, d=2753。首先,A选取一个大随机数x,比方说1117。A用B的公开钥匙给随机数1117加密,得到密文1652。A把1652减a的值发给B。如果A是一个22岁的漂亮MM,那么B实际接收到的数就是1630。
    接下来,B尝试用私人密钥来恢复x。由于B不知道a是多少,于是B枚举所有21到30之间的整数,用私钥对

1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660

    这10个数分别解密,得到的结果分别为

527, 1117, 1499, 2606, 3026, 3169, 3043, 1353, 1053, 1633


    当然,解出来的10个数里面,只有一个恰好等于x,其余的数其实都没啥意义。不过,B也不知道哪个数等于x。接下来B选取一个素数p,这个素数p应该比x小几个数量级(B不知道x是什么,但A可以透露出x大致的数量级)。假设B选的素数等于97,B把解密得到的10个数全部模p,得到

42, 50,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值