前言我们在程序中经常可以看到很多加密算法,比如MD5sha1等,今天我们就来了解一下这些加密算法。了解之后之前我们需要知道一个模块是hashlib,它是目前Python提供字符加密的模块。它加密的字符类型是二进制编码的,所以直接加密字符串会报错。importhashlibstring='任性的90后男孩'#使用encode转换sha1=hashlib.sha1()sha1.update(string.encode('utf-8'))res=sha1.hexdigest()print("sha1使用encode转换加密结果:",res)#使用字节转二进制sha1=hashlib.sha1()sha1.update(bytes(string,encoding='utf-8'))res=sha1.hexdigest()print("sha1使用byteTheconversionresult:",res)获取hashlib中所有的hash算法集可以使用以下两种方法之一:importhashliba=hashlib.algorithms_availableb=hashlib.algorithms_guaranteedprint(a)print(b)下面我们选择常用的重点讲解算法。1、MD5MD5即消息摘要算法5(Information-DigestAlgorithm5),用于保证信息传输的完整性和一致性。是计算机广泛使用的哈希算法之一(又译为摘要算法、散列算法),MD5一般在主流编程语言中都有实现。将数据(如汉字)计算成另一个固定长度的值是散列算法的基本原理。MD5的前身是MD2、MD3和MD4。MD5算法具有以下特点:1、可压缩性:对于任意长度的数据,计算出的MD5值的长度是固定的。2、计算方便:从原始数据中计算出MD5值很容易。3、抗修改:对原始数据的任何修改,即使只修改1个字节,也会导致MD5值相差很大。4.抗碰撞性强:知道原始数据及其MD5值,很难找到一个MD5值相同的数据(即伪造数据)。MD5的作用是让大容量的信息在用数字签名软件对私钥进行签名之前,先“压缩”成保密格式(即将任意长度的字节串转换成一定长度的十六进制数串).MD5是最常见的摘要算法,速度非常快,生成的结果是固定的128位字节,通常用32位的十六进制字符串表示。importhashlibstring='任性的90后男孩'md5=hashlib.md5()md5.update(string.encode('utf-8'))#转码,更新必须是byte类型res=md5.hexdigest()#Return字符汇总信息print(md5.digest())#返回字节汇总信息print("md5加密结果:",res)二、sha1安全哈希算法,SHA1的结果为160位字节,通常为40位的十六进制字符串用于表示importhashlibstring='任性的90后男孩'sha1=hashlib.sha1()sha1.update(string.encode('utf-8'))res=sha1.hexdigest()print("sha1加密结果:",res)3.sha224安全哈希算法importhashlibstring='任性的90后'sha224=hashlib.sha224()sha224.update(string.encode('utf-8'))res=sha224.hexdigest()print("sha224加密结果:",res)四、sha256安全哈希算法importhashlibstring='任性的90后'sha256=hashlib.sha256()sha256.update(string.encode('utf-8'))res=sha256.hexdigest()print("sha256加密结果:",res)V.sha384安全哈希算法importhashlibstring='任性的90后男孩'sha384=hashlib.sha384()sha384.update(string.encode('utf-8'))res=sha384.hexdigest()print("sha384加密结果:",res)6.sha512安全哈希算法importhashlibstring='任性的90后'sha512=hashlib.sha512()sha512.update(string.encode('utf-8'))res=sha512.hexdigest()print("sha512加密结果:",res)7、上面的加密算法虽然还是很强大的,但是也有缺陷,就是可以通过打数据库来逆向。因此,有必要在加密算法中加入自定义的密钥,然后进行加密。md5=hashlib.md5()md5.update('md5'.encode('utf-8'))res=md5.hexdigest()print("普通加密:",res)md51=hashlib.md5(b'md512')md51.update('md51'.encode('utf-8'))res=md51.hexdigest()print("Usingkeyencryption:",res)总结一下,今天就说这么多,主要介绍一下md5、sha1、sha224、sha256、sha384、sha512和高级加密等集中式算法,并简要介绍各算法的特点和使用方法。敬请期待精彩的后续!
