对称加密与非对称加密

一:对称加密

1:原理

通信双⽅使⽤同⼀个密钥,使⽤加密算法配合上密钥来加密,解密时使⽤加密过程的完全逆过程配合密钥来进⾏解密。

举个简单的例子:

按规则使⽤不同的⽂字来替换掉原先的⽂字来进⾏加密。
 
码表:
原始字符:ABCDEFGHIJKLMNOPQRSTUVWXYZ
密码字符:BCDEFGHIJKLMNOPQRSTUVWXYZA

原始书信:how are you
加密书信:ipx bsf zpv
解读后:  how are you

加密算法:替换⽂字

密钥:替换的码表

以上的例子就是最简单的对称加密的实现。

2:经典算法

DES56 位密钥,密钥太短⽽逐渐被弃⽤)、AES128 位、192 位、256 位密钥,现在最流⾏)

当然还有其他的算法,但这2种贵在金典。。

3:对称加密作⽤

加密通信,防⽌信息在不安全⽹络上被截获后,信息被⼈读取或篡改。

4:对称加密的缺点

密钥泄露:不能在不安全⽹络上传输密钥,⼀旦密钥泄露则加密通信失败

二:非对称加密

1:原理

使⽤公钥(加密密钥)对数据进⾏加密得到密⽂;使⽤私钥(解密密钥)对数据进⾏解密得到原数据。公钥和私钥是不相同的,

                                                       图 2-1

举个简单的例子(不用深究,但是足以体现非对称加密的最核心的原理,运用各种移位、溢出等算法):假如你遇到危险,这时候要发送个110求救,以防被截获咱们得给它加密一下

     原数据是: 110
         加密  +4  
通过加密秘钥后: 554
         解密  +6和移位等
                11 11 10
通过解密秘钥后:   1  1  0

2:使用场景

进行网络通信,非对称加密是怎么做到可以在不安全的网络环境下进行安全的通信的呢

                                                                       图 2-2

通信双方把加密秘钥给对方,然后双方怎么通信呢?图2-3中A通过B的加密秘钥加密数据后发给B,B就可以用B的机密秘钥进行解密,这样就实现的通信了。

       那像C也是可以获取到A、B的机密秘钥的,但是C没有A、B的解密秘钥,所以即使C获取的到秘文,也无法进行解密。但是C在拥有A/B的加密秘钥,那C不就可以冒充A、B进行传数据了吗,那要怎么保证传数据的那一方是实际数据来源方呢?在后面我们会进行讲解,继续往下

                                                                        图 2-3

                                                                        图 2-4

 图2-3和图2-4是一样的,从公钥的命名也可以知,公钥是可以公开的,但是私钥是一定要握在自己手上。很多时候公钥是可以通过私钥计算出来的,用的是椭圆曲线算法,比特币用的一种算法,所以如果拿到了私钥就等于同时拿到了公钥,可见私钥不能公开的必要性。

公钥能不能解私钥?

答案是能,可互相解

签名和验证

由于私钥和公钥互相可解,因此⾮对称加密还可以应⽤于数字签名技术。即用来证明发信息者的身份

                                                                     图 2-5

图2-5原数据通过私钥加密后(签名),生成签名数据,那对方就可以通过对应的公钥进行解密(验证)。由于别人没有我的私钥,就无法造出我的数据,也就无法冒充我了

                                                                      图2-6                                              

图2-6是比较标准的签名流程,会把原数据一起发送,这个是主要是为了验证方便

 加密+签名

 在实际的使用过程,常会对原数据hash以后对hash签名,然后附加在原数据的后⾯作为签名。这是为了让数据更⼩。

 加密+签名(完整)

3:经典算法

RSA(可⽤于加密和签名)、DSA(仅⽤于签名,但速度更快)

三:Hash

1:定义

常会对原数据hash以后对hash签名,然后附加在原数据的后⾯作为签名。这是为了让数据更⼩。

2:作⽤

相当于从数据中提出摘要信息,因此最主要⽤途是数字指纹。

3:实际用途

  数据完整性验证

从⽹络上下载⽂件后,通过⽐对⽂件的Hash值(例如MD5、SHA1),可以确认下载的⽂件是否有损坏。如果下载的⽂件Hash值和⽂件提供⽅给出的Hash值⼀致,则证明下载的⽂件是完好⽆损的。

 唯⼀性验证

 如JAVA中验证,要重写hashCode()

隐私保护

当重要数据必须暴露的时候,有事可以选择暴露它的Hash值(例如MD5),以保障原数据的安全。

例如⽹站登录时,可以只保存⽤户密码的Hash值,在每次登录验证时只需要将输⼊的密码的Hash值和数据库中保存的Hash值作⽐对就好,⽹站⽆需知道⽤户的密码。这样,当⽹站数据失窃时,⽤户不会因为⾃⼰的密码被盗导致其他⽹站的安全也受到威胁。

加盐:由于彩虹表的存在,存储了很多常用密码对应的Hash值,这样就相当于破解了hash加密过的值,这时候加上一些自己特有的值一起hash,这样值就和直接Hash的值就不同了。

快速查找

HashMap

经典算法

MD5、SHA1、SHA256

  • 2
    点赞
  • 7
    收藏
  • 打赏
    打赏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

天兰之珠

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值