码迷,mamicode.com
首页 > 其他好文 > 详细

加密和安全

时间:2019-11-13 09:14:38      阅读:103      评论:0      收藏:0      [点我收藏+]

标签:code   dsa   特性   ide   key   接收   获取   查看   单向加密   

常见的加密算法和协议

对称加密,公钥加密,单向加密和认证协议

对称加密

对称加密,在加密和解密时使用的是同一个密钥
常见的对称加密有:DES,3DES,AES,Blowfish,Twofish,IDEA,RC6,CAST5

  • 对称密钥加密和解密的过程:

    数据发送方A和数据接收方B在发送数据前先通过某种渠道约定好密钥,然后A将明文的数据使用对称密钥进行加密,然后将加密后的数据发送给B,B接受到数据后使用相同的密钥对数据进行解密然后获取相应的数据

  • 通过上述的加密和解密过程可以了解到这种加密的方法有以以下这些特点:

    1.数据加密和解密时使用同一组密钥
    2.数据加密和机密时使用时间短效率高
    3.将原始数据分割成固定大小的块,逐个进行加密

  • 不难看出对称加密的缺点也是非常的明显:

    1.密钥过多:每一个数据对应的都需要使用一个不同的密钥进行加密,产生过多的密钥
    2.密钥分发:密钥在分发的过程种存在安全性问题
    3.数据的来源无法确认:由于谁都能对数据加同一密钥所以数据的来源性无法确认

非对称加密

非对称加密的密钥是成对的出现的,其分为公钥和私钥
公钥(Public key):公开给所有人
私钥(Secret key):自己留存,必须保证其私密性
常见的非对称加密的算法有:RSA(加密,数字签名),DSA(数字签名),ELGaml

  • 非对称加密的加解密和实现数字签名的过程:

    数据的发送方A和接收方B各生成一队密钥:A方公钥Pa、私钥Sa,B方公钥Pb、私钥Sb
    A方在传送明文数据前先使用自己的私钥(Sa)对数据进行加密,再使用B方的公钥(Pb)对加密后的数据再次加密,然后将数据传送给B,B方接受到数据后,先使用自己的私钥(Sb)对加密的数据进行解密,然后再使用A的公钥(Pa)再次对数据进行解密以此来确认数据确实是由A发送而来。

  • 通过该流程可以发现非对称加密有以下特点:

    用公钥加密的数据,只能由与之相对应的私钥进行解密,反之亦然。

  • 通过其特性可以实现以下功能:

    1.可以实现数字签名,让接受可以确认数据发送方的身份
    2.可以实现对称密钥的交换,发送方可以使用对方的公钥加密一个对称密钥然后发送给对方
    3.由于非对称加密的解密的时间比较长,所以只适合较小数据的加密

  • 由此可见其缺点是非常明显的:

    1.非对称密钥的长度非常的长。
    2.非对称加密在解密时的效率非常的低下

单项散列(hash算法)

hash算法又叫数据摘要,这种算法无法被逆推,可以确保数据的完整性,确保数据没有被篡改,用来做完整性校验。hash算法类似于指纹。

常见算法: md5: 128bits、sha1: 160bits、sha224、sha256、sha384、sha512
示例:
将一窜字符定向给file1,然后对file1进行一系列操作并用md5sum进行提取指纹信息查看。

[root@centos7 ~]# echo abcdefg > file1
[root@centos7 ~]# md5sum file1                  
020861c8c3fe177da19a7e9539a5dbac  file1     #对刚创建的file1文件提取数据摘要
[root@centos7 ~]# cp file1 file2
[root@centos7 ~]# md5sum file2
020861c8c3fe177da19a7e9539a5dbac  file2     #复制file1命名为file2再提取数据摘要与file1做比较
[root@centos7 ~]# echo 1 >> file2
[root@centos7 ~]# md5sum file2
7f01eb26bac5f3a716b77cb702d85184  file2     #给file2添加点数据然后提取数据摘要再次和上一次的file2的数据摘要作比较

通过上述示例可以发现,文件名的改变对数据的摘要信息毫无影响,但当数据的内容发生改变时,所提取出来的数据摘要将发生天翻地覆的变法。数据的完整性校验就是通过此种方法来实现的。

所以单向散列有以下的特点:

1.任意长度输入,固定长度输出
2.若修改数据,指纹也会改变
3.无法从指纹中重新生成数据
根据其特点可以实现数据完整性这一功能。

数字签名

通过上述3种加密方法的特点,我们可以实现出一种既能进行加密又能确保解密高效性,并且缺保数据的完整性的方法,这种方法称为数字签名

  • 数字签名的实现办法:

    发送数据发送方用hash算法从数据中生成数据摘要,然后用自己的私人密钥对这个摘要进行加密,这个加密后的摘要将作为数据数字签名和报文一起发送给接收方,接收方首先用与发送方一样的hash算法从接收到的原始数据中计算出数据摘要,接着再用发送方的公用密钥来对数据附加的数字签名进行解密,如果这两个摘要相同、那么接收方就能确认该数字签名是发送方的

  • 数字签名有两种功效

    1.能确定数据确实是由发送方签名并发出来的,因为别人假冒不了发送方的签名。
    2.数字签名能确定数据的完整性。因为数字签名的特点是它代表了数据的特征,数据如果发生改变,数字摘要的值也将发生变化。不同的数据将得到不同的数字摘要。 一次数字签名涉及到一个hash算法、发送者的公钥、发送者的私钥

加密和安全

标签:code   dsa   特性   ide   key   接收   获取   查看   单向加密   

原文地址:https://blog.51cto.com/14234291/2449739

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!