密码学取余运算

一、前言

RSA 公钥算法是MIT的 Rivest、Shamir和 Adleman在1978年提出来的。RSA方案是被最广泛接受并实现的通用公开密钥密码算法,目前已成为公钥密码的国际标准。该算法的数学基础是初等数论中的欧拉定理,其安全性建立在大整数因子分解的因难性之上。

二、RSA的算法描述

1.密钥生成

(1)选取两个随机的大素数p,q

(2)计算n=pq,Ø(n)=(p-1)(q-1)

(3)选择一个随机数e,并且1<e<Ø(n),且e与Ø(n)的最大公约数为1

(4)公钥为(e,n),私钥为(d,n),其中d=e^{-1} mod Ø(n)

2.加密

对于明文m<n,其对应的密文为c=m^{e} mod n

3.解密

对密文c,其对应的明文为m=c^{d} mod n

三、取余运算

1.正整数取余

例:7 mod 3=1

2.负整数取余

例:-1 mod 26=25

这个式子可以看成(-1+26) mod 26

于是上式等于25 mod 26

等于25

3.分数取余

下面通过一个实例向大家介绍分数取余的运算过程

例:取p=47,q=71

则:

(1)n=pq=47*71=3337;

(2)Ø(n)=(p-1)*(q-1)=46*70=3220;

(3)选取随机数e=79;

(4)则私钥d=79^{-1} mod 3220

那么这个式子(4)如何解呢?这里就要用到欧几里得算法(又称辗转相除法),解法如下:

(1)上式可以表示成79*d-3220*k=1(其中k为正整数);

(2)将3220对79取模得到的余数60代替3220,则变为79*d-60*k=1;

(3)同理,将79对60取模得到的余数19代替79,则变为19*d-60*k=1;

(4)同理,将60对19取模得到的余数3代替60,则变为19*d-3*k=1;

(5)同理,将19对3取模得到的余数1代替19,则变为d-3*k=1;

当d的系数最后化为1时,

令k=0,代入(e)式中,得d=1;

将d=1代入(d)式,得k=6;

将k=6代入(c)式,得d=19;

将d=19代入(b)式,得k=25;

将k=25代入(a)式,得d=1019,这个值即我们要求的私钥d的最终值。

此时,我们即可得到公钥为(e,n)=(79,3337),私钥为(d,n)=(1019,3337)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值