菜鸟教程 -- 学的不仅是技术,更是梦想!

Python 3 教程
Python3 教程 Python3 简介 Python3 环境搭建 Python3 VScode Python3 基础语法 Python3 基本数据类型 Python3 数据类型转换 Python3 解释器 Python3 注释 Python3 运算符 Python3 数字(Number) Python3 字符串 Python3 列表 Python3 元组 Python3 字典 Python3 集合 Python3 条件控制 Python3 循环语句 Python3 编程第一步 Python3 推导式 Python3 迭代器与生成器 Python3 with Python3 函数 Python3 lambda Python3 装饰器 Python3 数据结构 Python3 模块 Python __name__ Python3 输入和输出 Python3 File Python3 OS Python3 错误和异常 Python3 面向对象 Python3 命名空间/作用域 Python 虚拟环境的创建 Python 类型注解 Python3 标准库概览 Python3 实例 Python 测验

Python3 高级教程

Python3 正则表达式 Python3 CGI编程 Python3 MySQL(mysql-connector) Python3 MySQL(PyMySQL) Python3 网络编程 Python3 SMTP发送邮件 Python3 多线程 Python3 XML 解析 Python3 JSON Python3 日期和时间 Python3 内置函数 Python3 MongoDB Python3 urllib Python uWSGI 安装配置 Python3 pip Python3 operator Python math Python requests Python random Python OpenAI Python 有用的资源 Python AI 绘画 Python statistics Python hashlib Python 量化 Python pyecharts Python selenium 库 Python 爬虫 Python Scrapy 库 Python Markdown Python sys 模块 Python Pickle 模块 Python subprocess 模块 Python queue 模块 Python StringIO 模块 Python logging 模块 Python datetime 模块 Python re 模块 Python csv 模块 Python threading 模块 Python asyncio 模块 Python PyQt Python for 循环 Python while 循环
(追記) (追記ここまで)

Python hashlib 模块

Python hashlib 模块主要用于进行哈希(hash)操作。

哈希(Hash)是一种将任意长度的输入数据映射为固定长度输出数据的算法。

哈希通常用于验证数据的完整性、安全存储密码等场景。

哈希函数的输出通常是一串看似随机的字母和数字。

hashlib 模块提供了常见的哈希算法的实现,如 MD5、SHA-1、SHA-256 等。

要使用 hashlib 函数必须先导入:

import hashlib 

查看 hashlib 模块中的内容:

实例

>>> import hashlib
>>> dir(hashlib)
['__all__', '__block_openssl_constructor', '__builtin_constructor_cache', '__builtins__', '__cached__', '__doc__', '__file__', '__get_builtin_constructor', '__loader__', '__name__', '__package__', '__spec__', '_hashlib', 'algorithms_available', 'algorithms_guaranteed', 'blake2b', 'blake2s', 'md5', 'new', 'pbkdf2_hmac', 'scrypt', 'sha1', 'sha224', 'sha256', 'sha384', 'sha3_224', 'sha3_256', 'sha3_384', 'sha3_512', 'sha512', 'shake_128', 'shake_256']

以下是 hashlib 模块的一些常用方法和哈希算法的简介:

常用方法

hashlib.new(name, data=None): 创建一个哈希对象。

name 参数是哈希算法的名称,data 参数是要被哈希的数据。

实例


import hashlib

sha256_hash = hashlib.new('sha256')
sha256_hash.update(b'RUNOOB')
print(sha256_hash.hexdigest())

输出结果为:

673dc967d03201db7fe47b7eabd56c47ca5bc694222de303106a5504e5d0daa8

hashlib.md5() / hashlib.sha1() / hashlib.sha256() / ...: 直接使用特定的哈希算法创建哈希对象。

实例

import hashlib

md5_hash = hashlib.md5(b'RUNOOB')
print(md5_hash.hexdigest())

输出结果为:

18fa661e2a4a7dd6471cc1407290cf6e

哈希对象方法

update(data): 更新哈希对象的消息内容。

实例

import hashlib

sha256_hash = hashlib.sha256()
sha256_hash.update(b'Hello, ')
sha256_hash.update(b'Runoob!')
print(sha256_hash.hexdigest())

输出结果为:

1b56561022276e9a5a8e1cda72e1b39fca6f6074326a74d39f6dfd9540c8ecd7

hexdigest(): 获取十六进制表示的哈希值。

实例

import hashlib

md5_hash = hashlib.md5(b'RUNOOB')
print(md5_hash.hexdigest())

输出结果为:

18fa661e2a4a7dd6471cc1407290cf6e

digest(): 获取二进制表示的哈希值。

实例

import hashlib

sha1_hash = hashlib.sha1(b'RUNOOB')
print(sha1_hash.digest())

输出结果为:

b'4\x17\t\xd0\xdb\xc2f3/\x1c\xbc\xd8\xc2_\xd4\xa0T\x12\xb7\xd4'

常见哈希算法

MD5

实例

import hashlib

md5_hash = hashlib.md5(b'RUNOOB')
print(md5_hash.hexdigest())

输出结果为:

18fa661e2a4a7dd6471cc1407290cf6e

SHA-1

实例

import hashlib

sha1_hash = hashlib.sha1(b'RUNOOB')
print(sha1_hash.hexdigest())

输出结果为:

341709d0dbc266332f1cbcd8c25fd4a05412b7d4

SHA-256

实例

import hashlib

sha256_hash = hashlib.sha256(b'RUNOOB')
print(sha256_hash.hexdigest())

输出结果为:

673dc967d03201db7fe47b7eabd56c47ca5bc694222de303106a5504e5d0daa8

SHA-512

实例

import hashlib

sha512_hash = hashlib.sha512(b'RUNOOB')
print(sha512_hash.hexdigest())

输出结果为:

7cfe50493eebd48ee7330c797459c2d0d5ca943bd1c84ad7a0b6783b11cd49d06b4a1dc84ee9ea5e20d0bfedbdb67e716500a20e5870abecea3f32dc8484a811

在实际应用中,选择合适的哈希算法取决于具体的需求。需要注意的是,MD5 和 SHA-1 已经被认为不安全,特别是在安全领域,推荐使用更强大的算法,如 SHA-256 或 SHA-512。

Python hashlib 模块中常见的哈希算法及其含义:

算法名称摘要长度(位)输出长度(字节)安全性用途
md512816不安全数据完整性验证、密码存储等
sha116020不安全数据完整性验证、密码存储等
sha22422428数据完整性验证、数字签名等
sha25625632中等数据完整性验证、数字签名等
sha38438448数字签名、加密算法等
sha51251264数字签名、加密算法等
sha3_22422428未来标准的 SHA-3 家族成员,适用于数字签名等
sha3_25625632未来标准的 SHA-3 家族成员,适用于数字签名等
sha3_38438448未来标准的 SHA-3 家族成员,适用于数字签名等
sha3_51251264未来标准的 SHA-3 家族成员,适用于数字签名等
shake_128可变可变SHAKE 系列是 SHA-3 家族的可变长度版本,适用于各种应用
shake_256可变可变SHAKE 系列是 SHA-3 家族的可变长度版本,适用于各种应用

说明:

  • 摘要长度(位): 表示哈希算法输出的摘要长度,以位为单位。
  • 输出长度(字节): 表示哈希算法输出的摘要长度,以字节为单位。
  • 安全性: 表示哈希算法的安全性级别,包括 "不安全"、"低"、"中等"、"高"。这是一个一般性的分类,具体的安全性还要考虑算法的用途和具体的攻击场景。
AI 思考中...

点我分享笔记

  • 昵称 (必填)
  • 邮箱 (必填)
  • 引用地址

AltStyle によって変換されたページ (->オリジナル) /