常用加密算法

2018-10-08  本文已影响0人  __XY__

概述


摘要算法:

常用的摘要算法有MD5,SHA1。摘要算法是一个不可逆过程,就是无论多大数据,经过算法运算后都是生成固定长度的数据,一般结果使用16进制进行显示。
MD5和SHA1的区别:
MD5结果是128位摘要,即16个字节,用十六进制表示的话就是32个字符。
SHa1是160位摘要。即20个字节,用十六进制表示就是40个字符。
SHa256是256位摘要。即32个字节,用十六进制表示就是64个字符。
那么MD5的速度更快,而SHA1的强度更高。

摘要算法用途:

摘要算法代码:

In [22]: import hashlib

In [23]: hashlib.md5(b'hello').hexdigest()
Out[23]: '5d41402abc4b2a76b9719d911017c592'

In [24]: hashlib.sha1(b'hello').hexdigest()
Out[24]: 'aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d'

In [25]: hashlib.sha256(b'hello').hexdigest()
Out[25]: '2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824'

In [26]: len('5d41402abc4b2a76b9719d911017c592')
Out[26]: 32

In [27]: len('aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d')
Out[27]: 40

In [28]: len('2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824')
Out[28]: 64

对称加密

对称加密算法只是为了区分非对称加密算法。其中鲜明的特点是对称加密是加密解密使用相同的密钥,而非对称加密加密和解密时使用的密钥不一样。对于大部分情况我们都使用对称加密,而对称加密的密钥交换时使用非对称加密,这有效保护密钥的安全。非对称加密加密和解密密钥不同,那么它的安全性是无疑最高的,但是它加密解密的速度很慢,不适合对大数据加密。而对称加密加密速度快,因此混合使用最好。

常用的对称加密算法有:AES和DES.

对称加密用途

所以一般的HTTPS连接只在第一次握手时使用非对称加密,通过握手交换对称加密密钥,在之后的通信走对称加密。

对称加密代码

# pip install crypto

ln [23]: from Crypto.Cipher import AES
In [24]: e = AES.new(b'asdfasdfasdfasdf',AES.MODE_CBC,b'asdfasdfasdfasdf')

In [25]: d = AES.new(b'asdfasdfasdfasdf',AES.MODE_CBC,b'asdfasdfasdfasdf')

In [26]: a = e.encrypt(b'hellohellohello0')

In [27]: a
Out[27]: b"\xf8\x01\x97\xf0\xda'\xa0O\x8d\x0c;\x88#\xdc\xb5l"

In [28]: d.decrypt(a)
Out[28]: b'hellohellohello0'

几个常用的加密组合

ssh原理

这里进行一下说明:

https 加密原理

第一步,爱丽丝给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的加密方法。

第二步,鲍勃确认双方使用的加密方法,并给出数字证书、以及一个服务器生成的随机数(Server random)。

第三步,爱丽丝确认数字证书有效,然后生成一个新的随机数(Premaster secret),并使用数字证书中的公钥,加密这个随机数,发给鲍勃。

第四步,鲍勃使用自己的私钥,获取爱丽丝发来的随机数(即Premaster secret)。

第五步,爱丽丝和鲍勃根据约定的加密方法,使用前面的三个随机数,生成"对话密钥"(session key),用来加密接下来的整个对话过程。

参考

https://blog.csdn.net/u013565368/article/details/53081195
http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html

上一篇 下一篇

猜你喜欢

热点阅读