RSA算法与维吉尼亚密码

RSA算法

RSA算法描述

第1步:用两个很大的互异的质数p和q(p和q必须保密),计算它们的乘积n=pq;n是模数。
第2步:选择一个比n小的数e,它与(p-1)(q-1)互为质数,即除了1以外,e和(p-1)(q-1)没有其他的公子。
第3步:找到另一个数d,使(ed-1)能被(p-1)(q-1)整除。即ed=1 mod (p-1)(q-1)
第4步:取公开密钥为(e,n)这一对数;私有密钥为(d,n)这一对数。
第5步:加密过程为c=m^e(mod n)(m为明文,c为密文)

第6步:解密过程为m=c^d(mod n)

RSA算法实例

例:采用RSA算法,其中e=7,p=11,q=13,求出公钥和私钥,并求出明文85进行加密后的密文。

解:第一步:首先求出模数n=p*q=11*13=143
第二步:求出(p-1)*(q-1)=(11-1)*(13-1)120,e已知为7,就不用求了
第三步:找出d满足e*d=1 mod (p-1)*(q-1),既7d=1mod120(等同于7d-1=120k(k=1,2,3……))

这里求得d=103
第四步:取公钥:(e,n)即(7,143)

              私钥(d,n)即(103,143)

第五步:计算出密文c=m^e mod n=85^7mod143=123

(85^7mod143是85^7除143求余数)

例:采用RSA算法,其中p=5,q=7,d=29。求公开密钥和私有密钥

解:第一步:首先求出模数n=p*q=5*7=35
第二步:求出(p-1)*(q-1)=(5-1)(7-1)=24
第三步:求e,由e*d=1 mod (p-1)*(q-1),得29d=1mod24,(29e-1=24K(k为正整数))

这里求得e=5
第四步:取公钥:(e,n)即(5,35)

              私钥(d,n)即(29,35)

维吉尼亚密码

算法描述

维吉尼亚密码是在凯撒密码基础上产生的一种加密方法,它将凯撒密码的全部25种位移排序为一张表,与原字母序列共同组成26行及26列的字母表。维吉尼亚密码加密方法示例如下:对密钥字符,规定密钥子母a、 b、c、 d..... .y、z对应的数字n为0、1、2、3......24、25。
每个明文字符首先找到对应的密钥字符,然后根据英文字母表按照密钥字符对应的数字n向后顺序推后n个字母即可得到明文字符对应的密文字符。

字符abcdefghijklmnopqrstuvwxyz
n012345678910111213141516171818202122232425

例:使用维吉尼亚密码进行加密,明文为welcomeeverybody,给出密钥字为bestwish,推算出该明文对应的密文。

组数12345678910111213141516
明文welcomeeverybody
密钥bestwishbestwish
密文xidvkuwlwijrxwvf
对明文中第一个字母w,对应的密钥字符为b,b的对应需要向后推1个字母,所以是w->x;-因此其对应的密文字符为x,接下来的字符都用这种方式计算即得要求的密文
 

对于这个还有一种傻瓜办法,就是分别把明文和密钥对应的密钥字符列出来相加,再找到对应的字符就为要求的密文就拿上面的例子来说

明文welcomeevery……
对应数字2241121412442141724……
密钥bestwishbest……
对应数字141819228187141819……
相加2382921362022112283543……
对应字符xidvkuwlwijr……

最后求得的对应字符即要求的密文

注意:当两数相加大于25时用相加数字减去26后再找对应

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sxsry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值