Python基础20—Python常用模块(hashlib加密模块)(2022年)


1. 加密算法的介绍

1.1 HASH介绍(哈希算法)

HASH主要用于信息安全领域中加密算法,他把一些不同长度的信息转化成杂乱的128位的编码里,叫做HASH值.也可以说,hash就是找到一种数据内容和数据存放地址之间的映射关系。

简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。

1.2 MD5介绍

MD5讯息摘要演算法,一种被广泛使用的密码杂凑函数,可以产生出一个128位的散列值,用于确保信息传输完整一致。

MD5的功能

  • 输入任意长度的信息,经过处理,输出为128位的信息

  • 不同的输入得到的不同的结果,唯一

MD5的特点

  • 压缩性:任意长度的数据,算出的MD5值的长度都是固定的

  • 容易计算:从原数据计算出MD5值很容易

  • 抗修改性:对原数据进行任何改动,修改一个字节生成的MD5值区别也会很大

  • 强抗碰撞:已知原数据和MD5,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

MD5的用途

  • 防止被篡改
  • 防止直接看到明文
  • 防止抵赖(数字签名)

1.3 SHA-1介绍(安全哈希算法)

安全哈希算法:主要适用于数字签名标准里面定义的数字签名算法。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。

由于MD5和SHA-1于2005年被山东大学的教授王小云破解了,科学家们又推出了SHA224, SHA256, SHA384, SHA512,当然位数越长,破解难度越大,但同时生成加密的消息摘要所耗时间也更长。目前最流行的是加密算法是SHA-256。

2. hashlib 加密模块

hashlib加密模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法

1.2 MD5加密:hashlib.md5()

import hashlib

# md5
m = hashlib.md5()
m.update(b"It's me")
print(m.digest())  # 返回2进制格式的hash值
m.update(b"It's me")
print(m.hexdigest()) # 返回16进制格式的hash值

# b']\xde\xb4{/\x92Z\xd0\xbf$\x9cR\xe3Br\x8a'
# ba6d7daa7133105e3ee892ef92380157

1.2 安全哈希加密:hashlib.sha256()

import hashlib
# sha1
s1 = hashlib.sha1()
s1.update("Py小白雨".encode("utf-8"))
print(s1.hexdigest())
# sha256
s256 = hashlib.sha256()
s256.update("Py小白雨".encode("utf-8"))
print(s256.hexdigest())
# sha512
s512 = hashlib.sha512()
s512.update("Py小白雨".encode("utf-8"))
print(s512.hexdigest())

# af8bf09840b96a7ce1a44df5e2096c26ff768ad4
# 2510c5d783de07d3d7c6b83c7d28feeac17f67f96f07ef5d28fe10096ab5a1f1
# 696c758fd747ebef30601e24d6d2d92632f056c60c8f1d0e0aae536f34590b1a31287313f187cb31a35606d02a276141d7a3bcf58ffc69b4282a8cf44abb21b1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值