目录


一、加密基本原理

小明想发消息给小红表白,但是小明害怕黑客小刚会截取表白消息,于是小明决定加密之后再发出去。加密之前的消息称为明文,加密之后的消息称为密文。

看到明文我们可以理解其中的含义,看到密文则无法理解其中的含义:

v2-d96fcf05712384a9e988c6d690454fdb_1440w.png

小红收到了小明的加密邮件,但是作为接收者的小红也读不懂加密后的密文,于是小红需要对密文解密后再阅读,解密就是将密文恢复成明文的过程:

v2-2eab6bae42e063391c0c54ea70043513_1440w.png

小红羞红了脸。

将消息加密后发送的话,即使是消息被窃听,窃听者小刚也只是得到了密文,而无法得知加密前明文内容。

密码保证了消息的机密性:上述场景中,小明将邮件进行加密,而小红进行解密,这样做的目的就是为了不让窃听者小刚读取邮件的内容,小明和小红通过运用密码技术,保证了邮件的机密性。

破译:进行加密之后,小刚只能得到密文。如果小刚无论如何都想知道小明和小红聊了什么内容,就需要采取某种手段将密文还原成明文。小红将密文还原成明文称为解密,但是除了小红之外的人试图将密文还原成明文则称为密码破译,也称为密码分析。

密码算法:用于解决复杂问题的步骤,通常称为算法。从明文生成密文的步骤,也就是加密的步骤,称为加密算法,而解密的步骤则称为解密算法,加密解密算法合在一起统称为密码算法。

密码算法中需要密钥(key):无论是再加密还是解密时,都需要知道密钥。正如保险柜的钥匙可以存放贵重物品一样,密码中的密钥可以保护你的重要数据,即使保险箱再坚固,如果钥匙被盗,里面的贵重物品也会被盗,同样的,我们也必须像保护保险柜钥匙一样保护密钥。

v2-3c5f1b12c53a034eef007008985bed85_1440w.jpg

v2-e1cdbd5fbf830f3e3f6ca57ecd01e612_1440w.jpg

密码

根据密钥的使用方法可以将密码分为对称密码公钥密码两种:

  • 对称密码是指在加密和解密时使用同一密钥的方式;
  • 公钥密码指的是加密和解密时使用不同密钥的方式,因此,公钥密码又称为非对称密码;

公钥密码

在介绍公钥密码之前,先来说说投币寄存柜。

投币寄存柜是这样使用的:

  • 首先,将物品放入寄物柜,然后投入硬币并拔出钥匙,就可以将寄物柜关闭了,没有钥匙是无法打开的。
  • 只要有硬币,任何人都可以关闭寄物柜,但寄物柜一旦被关闭,再怎么投币也无法打开,打开寄物柜需要使用钥匙,而不是硬币。
  • 因此我们可以说,硬币是关闭寄物柜的钥匙,而钥匙则是打开寄物柜的密钥。

公钥密码中,密钥分为加密密钥解密密钥两种。

要理解公钥密码,清楚的区分加密密钥和解密密钥是非常重要的。

加密密钥是发送者加密时使用的,而解密密钥是接收者解密时使用的。

仔细思考一下加密密钥和解密密钥之间的区别,我们可以发现:

  • 发送者只需要加密密钥,接收者只需要解密密钥,解密密钥不可以被窃听者获取,加密密钥被窃听者获取也没问题。也就是说,解密密钥从一开始就是接受者自己保管的,因此只要将加密密钥发送给发送者就可以解决问题了,而根本不需要配送解密密钥。
  • 公钥密码中,加密密钥一般是公开的。正是由于加密密钥可以任意公开,因此该密钥被称为公钥。公钥可以直接通过邮件发送给接收者,也可以刊登在报纸的广告栏上,做成看板放在街上,或者做成网页公开给世界上的任何人,完全不必担心被窃听者小刚窃取。当然,我们也没有必要非将公钥公开给全世界的所有人,但至少要将公钥发送给发信者。
  • 相对的,解密密钥是绝对不能公开的,这个密钥只能由你自己来使用,因此被称之为私钥。私钥不能被别人知道,也不可以将发送给别人,甚至也不能发送给自己的通信对象。

下面我们看一看公钥密码通信的流程,和以前一样还是假设小明要给小红发一条表白信息,窃听者小刚依然能够窃听到他们之间的通信内容:

  • 1、小红首先生成一个包含公钥和私钥的密钥对,私钥由小红自己保管;
  • 2、小红将自己的公钥发给小明,即使被小刚窃听了也没关系。小红将公钥发送给小明,表示小红请小明用这个公钥对消息进行加密并发送给他;
  • 3、小明用小红的公钥对消息进行加密,加密后的消息只有用小红的私钥才能解密虽然小明有小红的公钥,但是用小红的公钥是无法对密文进行解密的;
  • 4、小明将密文发送给小红密文被窃听者小刚截获也没关系。小刚可能拥有小红的公钥,但是用小红的公钥是无法进行解密的;
  • 5、小红用自己的私钥对密文进行解密

二、RSA加密原理

下面来讲一下现在使用最广泛的公钥密码算法RSA

什么是RSA?

RSA是一种公钥密码算法,可以被用于公钥密码和数字签名

RSA加密

下面,我们终于可以讲一讲公钥密码的代表--RSA的加密过程了

在RSA中,明文、密钥和密文都是数字。RSA的加密过程可以用下列公式来表达,这个公式很重要:

equation.svg

就这么简单,仅仅对明文进行E次方求mod即可,这就是整个加密过程

E和N的组合就是公钥

RSA解密

RSA的解密和加密一样简单可以用下面的公式来表达:

equation (1).svg

也就是说,对密文的数字的D次方modN就可以求到明文。

v2-bc6b98811c2155b85080248b3692ff43_1440w.jpg

v2-71a1fd713a402bee198e957132c3a3d2_1440w.jpg

至于怎么生成E和D和N:

  • 1、求N:先选择两个质数p、q N=p*q
  • 2、求L:L=lcm(p-1,q-1)
  • 3、求E:gcd(E,L)=1,选择一个成立的E即可
  • 4、求D:E*D mod L=1
  • 5、公钥E,N可以任意公开;私钥D,N必须妥善保管

恭喜你,至此我们已经学会了RSA公钥加密的基本原理。

发表评论