RSA非对称加密算法

目录

1. 算法简介

2. 算法原理

2.1 密钥生成

2.2 数据加解密

3. 参考文献


1. 算法简介

        RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)在麻省理工学院提出的,RSA(Rivest-Shamir-Adleman)就是他们三人姓氏开头字母拼在一起组成的。从提出后经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。

        RSA算法设计的最初理念与目标是使互联网安全可靠,旨在解决DES(Data Encryption Standard)算法应用中的密钥分发难题。RSA算法不仅很好的解决了对称加密密钥分发问题,还可用于数字签名,防止身份伪造、信息抵赖和非法篡改,保护数据信息真实性和完整性。

2. 算法原理

        RSA是分组密码,对于某个n,他的明文和密文是0至n-1之间的整数,算法原理如下:

2.1 密钥生成

        (1)选择2个大素数pq,计算n=pqn成为算法的模数。pq必须严格保密,一般要求pq为安全素数,n的长度大于1024bit。

        (2)计算n的欧拉函数,即\varphi \left ( n \right )=\left ( p-1 \right )\left ( q-1 \right )\varphi \left ( n \right )定义为不超过n并且与n互质的数的个数。

        (3)从\left [ 0,\varphi \left ( n \right )-1 \right ]中随机选择一个与\varphi \left ( n \right )互质的数e作为可公开的加密密钥。

        (4)计算解密密钥dde\varphi \left ( n \right )的乘法逆元,满足ed\equiv 1\,mod\,\varphi \left ( n \right )。其中,乘法逆元可通过Eucild算法计算,dn也要互质,素数pq不再需要但不可让任何人知道。

        由以上步骤得到公钥PK=\left ( e,n \right )、私钥SK=\left ( d,n \right )

2.2 数据加解密

        加密信息m(二进制表示)时,首先切割为等长数据块m_{1}m_{2}\cdotsm_{i},块长s,其中2^{s}\leqslant n,且s的取值要尽可能大。

        (1)加密时执行如下计算:c_{i}\equiv m_{i}^{e}\left (mod\,n \right )c_{i}为对明文m_{i}加密后得到的密文;

        (2)解密时执行如下计算:m_{i}'\equiv c_{i}^{d}\left (mod\,n \right )m_{i}'为对密文c_{i}解密后得到的明文。

3. 参考文献

[1]高承实,王永娟,于刚. 区块链中的密码技术[M]. 浙江大学出版社: 2021. 65-69.

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值