crypto学习~RSA加密算法

为什么需要加密?

密码学源于解决消息传递过程中的安全问题。

我们可以假设有这样一个情景:远在外地读书的小熊要交学费,给熊爸爸写了一封信,要熊爸爸汇款4000元到小熊的账户上。在这个过程中,有很多人都可以接触到这个信,那么假设

场景1

小熊的信件会有一些较为敏感的信息,比如身份证号,银行卡号等,被一些别有用心的坏人接触到后,可能会进行一些违法的事情 。  帮信罪

场景2

小熊将信交给邮递员,可是邮递员偷偷看了小熊的信,并悄悄改了银行账户,而这一切小熊和熊爸爸并不知情,最后熊爸爸将钱转入到他人的账户中。

场景3

经过前两次的教训,熊爸爸决定亲自将信交到小熊手里,可是却有人乔装打扮成小熊,骗过了熊爸爸,将信件骗走了。

经过上面三个场景可以知道,密码的出现其实就是为了解决下面三个问题:

1.信息保密问题

2.信息篡改问题

3.通信对象认证问题

密码系统

信息加密是指将信息转化为任何第三方都无法读懂,只有发送方和接收方能看懂的信息。例如暗号可以看作最简单的加密方式。如果存在一门外语只有通讯双方知道,那么将信息翻译成这种语言也算一种加密方式。当然,今天我们要聊的加密复杂的多。

密码系统是由 算法+密钥 所组成。明文和密钥是原材料,算法是加工的方式,产出就是密文

什么是密钥?

密钥是一种参数,它是在明文转换为密文或密文转换为明文时算法的输入参数。可以理解成密码的钥匙。

什么是RSA?

维基百科:RSA加密算法是一种非对称加密算法,在公开密钥加密电子商业中被广泛使用。RSA是由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)在1977年一起提出的。当时他们三人都在麻省理工学院工作。RSA 就是他们三人姓氏开头字母拼在一起组成的。

RSA是一种非对称加密算法,那什么是非对称加密算法呢?既然有非对称加密算法,是不是也有对称加密算法呢?

非对称加密和对称加密

1.非对称加密

非对称加密即公开密钥加密,是加密和解密使用不同密钥的一种加密方法,包括公开密钥和私有密钥。非对称加密即解密人和加密人使用不同的密码不一样,即加密人使用一个公钥将信息加密(如图右方三只小兔是加密方,类比为寄信人,去邮箱投递,使用钥匙A打开锁A寄信);解密人则使用一个私钥解密,获取信息(如图左方黑色小兔来邮箱取信,使用钥匙B打开锁B将信取出),整个过程信息是不变的,即寄出的信和收到的信其实是同一封,只是寄出与收的时候使用了不同的钥匙。但其实公钥和私钥是一对,使用公钥加密,只能使用对应的私钥来解密;如果用私钥来加密,那么只能用对应的那把公钥来解密才行

2.对称加密

对称加密即私有密钥加密,是加密和解密使用相同密钥的加密方法,加密过程和解密过程都使用同一个密钥,如图明文和密钥一起通过加密算法使其变成密文,解密时,密文也使用同一个密钥(加密解密均使用同一个密钥),解密出明文。类似逆运算。

RSA加密解密过程

RSA是现在最为使用广泛的非对称加密算法

算法原理:

就好比两个素数,让他们相乘得到了一个数,这时需要只通过这个数来得到那两个素数,就显得十分困难,如果能快速得找出两个素数,那么RSA就可以轻易破解了

加密解密原理:

RSA 加解密算法:

密文=明文^E mod N

明文=密文^D mod N

RSA 算法并不会像对称加密一样,用玩魔方的方式来打乱原始信息。RSA 加、解密中使用了是同样的数 N。公钥是公开的,意味着 N 也是公开的。所以私钥也可以认为只是 D。

我们接下来看一看 N、E、D 是如何计算的。

1、求 N

首先需要准备两个很大质数 a 和 b。太小容易破解,太大计算成本太高。我们可以用 512 bit 的数字,安全性要求高的可以使用 1024,2048 bit。

N=a*b

2、求 L

L 只是生成密钥对过程中产生的数,并不参与加解密。L 是 (a-1) 和 (b-1) 的最小公倍数

3、求 E(公钥)

E 有两个限制:

1<E<L

E和L的最大公约数为1

第一个条件限制了 E 的取值范围,第二个条件是为了保证有与 E 对应的解密时用到的 D。

4、求 D(私钥)

D 也有两个限制条件:

1<D<L

E*D mod L = 1

第二个条件确保密文解密时能够成功得到原来的明文。

由于原理涉及很多数学知识,这里就不展开细讲,我们只需要了解这个过程中用到这几个数字及公式。这是理解RSA 安全性的基础。

参考文章

加密就像玩魔方----图文详解对称加密(DES、AES) - 知乎 (zhihu.com)

图文彻底搞懂非对称加密(公钥密钥) - 知乎 (zhihu.com)

深入理解对称加密和非对称加密 - 知乎 (zhihu.com)

RSA加密算法 - 维基百科,自由的百科全书 (wikipedia.org)

RSA —— 经典的非对称加密算法 - 知乎 (zhihu.com)

  • 25
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值