RSA 公开密钥算法简介和示例

在对称密钥系统中,分发密钥往往是最薄弱的环节

 1976年,斯坦福大学的Diffie和Hellman提出了一种全新的密钥系统

 特点:

     1.加密密钥和解密密钥不同

     2.解密算法E和解密算法D满足三个要求:

             D(E(p))=p    p指文本字符

            从E推出D极其困难

           从选择明文攻击不可能破解E

因为具备上述条件,加密密钥和加密算法都可以被公开

这种系统被称为公开密钥密码系统。

公开密钥密码系统要求每个用户拥有两个密钥,一个是公开密钥(公钥),另一个是私有密钥(私钥)

其他人给某个用户发送消息的时候,用该用户的公钥加密

用户解密收到的消息的时候,使用自己的私钥解密


RSA 公开密钥算法由MIT的Rivest、Shamir、Adleman发明,主要使用数论中的大数分解

1.预计算

   选择两个大的素数x和y(通常1024位)

   计算n=x*y和z=(x-1)*(y-1)

   选择一个与z互素的数,称为d

   找到e,使其满足e*d=1 mod z

2.将明文划分成k位的块,k是满足2^k<n的最大整数

  加密消息p,p是文本字符,只需计算c=p^e (mod n)

  解密密文c,只需计算p=c^d(mod n)

  注:e,d,n  在第一步都已算出

  公钥对是(e,n) ,私钥对是(d,n)

RSA算法的安全性建立在大数分解的难度基础上,如果能够分解大数n,则算法自动破解,但是数学家探索了大数分解300年也进展不大

算法的缺点是速度太慢,一般用来分发密钥,而不直接用来加密数据。

一个例子帮大家理解:




取x=3,y=11

计算n=33,z=20

选取d=7以便与z互素,计算出e=3,使其满足e*d=1 mod z

c=p^3(mod 33) ; p=c^7(mod 33)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值