当前位置 主页 > 服务器问题 > Linux/apache问题 >

    python实现加密的方式总结

    栏目:Linux/apache问题 时间:2020-01-26 21:01

    加密算法分类

    对称加密算法:

    对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥

    发送方和接收方需要持有同一把密钥,发送消息和接收消息均使用该密钥。

    相对于非对称加密,对称加密具有更高的加解密速度,但双方都需要事先知道密钥,密钥在传输过程中可能会被窃取,因此安全性没有非对称加密高。

    常见的对称加密算法:DES,AES,3DES等等

    非对称加密算法:

    文件加密需要公开密钥(publickey)和私有密钥(privatekey)。

    接收方在发送消息前需要事先生成公钥和私钥,然后将公钥发送给发送方。发送放收到公钥后,将待发送数据用公钥加密,发送给接收方。接收到收到数据后,用私钥解密。

    在这个过程中,公钥负责加密,私钥负责解密,数据在传输过程中即使被截获,攻击者由于没有私钥,因此也无法破解。

    非对称加密算法的加解密速度低于对称加密算法,但是安全性更高。

    非对称加密算法:RSA、DSA、ECC等算法

    消息摘要算法:

    消息摘要算法可以验证信息是否被篡改。

    在数据发送前,首先使用消息摘要算法生成该数据的签名,然后签名和数据一同发送给接收者。

    接收者收到数据后,对收到的数据采用消息摘要算法获得签名,最后比较签名是否一致,以此来判断数据在传输过程中是否发生修改。

    基础知识扫盲

    对称加密

    对称密钥加密 , 又叫私钥加密。即信息发送的方和接受方用一个密钥去加密和揭秘数据。 最大的优势是 加解密速度快,适合对大量数据进行加密, 对称加密的缺点是密钥的管理和分配, 换句话说就是 如何把密钥发送到需要解密你的消息的人手里的问题。在发送密钥的过程中, 密钥有很大的风险被黑客拦截。 现实中的做法是将对称加密的密钥进行非对称加密然后传给需要他的人。

    非对称加密

    非对称加密系统, 又称公钥密钥加密。 非对称加密为数据的加密与解密提供了一种非常安全的方式。她使用了一对密钥, 私钥和公钥。 私钥只能有一方安全保管, 不能外泄, 而公钥可以发给任何请求她的人。非对称加密使用这对密钥中的一个进行加密, 而解密却需要一个另外一个密钥。 比如你去银行 你向银行请求公钥,银行将公钥发给你,你使用公钥对消息加密,那么只有私钥的持有人–银行才能对你的消息解密。 与对称加密的不同之处是, 银行不需要将私钥通过网络发送出去。因此安全性大大提高。 目前最常用的非对称加密算法是RSA算法。公钥机制灵活,但加密和解密速度却比对称密钥加密慢得多。 公钥机制灵活, 但是加密和解密速度却要比堆成加密慢很多。

    1) Alice需要在银行的网站做一笔交易,她的浏览器首先生成了一个随机数作为对称密钥。(2) Alice的浏览器向银行的网站请求公钥。(3) 银行将公钥发送给Alice。(4) Alice的浏览器使用银行的公钥将自己的对称密钥加密。(5) Alice的浏览器将加密后的对称密钥发送给银行。(6) 银行使用私钥解密得到Alice浏览器的对称密钥。(7) Alice与银行可以使用对称密钥来对沟通的内容进行加密与解密了。

    总结

    (1) 对称加密加密与解密使用的是同样的密钥,所以速度快,但由于需要将密钥在网络传输,所以安全性不高。(2) 非对称加密使用了一对密钥,公钥与私钥,所以安全性高,但加密与解密速度慢。(3) 解决的办法是将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通。

    python中加密的注意点

    我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes。