当前位置: 首页 > news >正文

《Python基础》之数据加密模块hashlib的用法

目录

一、简介

二、用法

步骤一、导入hashlib库

步骤二、创建哈希对象

步骤三、往哈希对象中传值

1、可以在创建对象的时候传值

2、使用updata传值

步骤四、获取经过哈希对象加密后的值

三、注意事项

1、编码问题

2、安全性

3、多次传值

四、总结


一、简介

hashlib 是 Python 标准库中的一个模块,用于提供多种安全哈希和消息摘要算法。它支持多种哈希算法,如 MD5、SHA-1、SHA-256 等。哈希函数通常用于数据完整性验证、密码存储、数字签名等场景。

二、用法

步骤一、导入hashlib库

import hashlib

步骤二、创建哈希对象

以md5加密方法为例子

# 创建对象
md5_hash = hashlib.md5()

步骤三、往哈希对象中传值

传入哈希对象中的值必须是以字节的形式,所以在传值时要指定编码形式,如'utf-8'

1、可以在创建对象的时候传值
md5_hash = hashlib.md5('456'.encode('utf-8'))
2、使用updata传值
md5_hash.update('123'.encode('utf-8'))

步骤四、获取经过哈希对象加密后的值

使用hexdigest()方法获取加密后的值

outputs = md5_hash.hexdigest()

 :获取的值是前面传入的值拼接后的总和,且只要传入的值不变输出的值也不会变,演示如下:

import hashlib
# 逐个传入
md5_hash = hashlib.md5()
md5_hash.update('123'.encode('utf-8'))
md5_hash.update('456'.encode('utf-8'))
output1 = md5_hash.hexdigest()
print(f'output1--{output1}')# 整体传入
md5_hash1 = hashlib.md5()
md5_hash1.update('123456'.encode('utf-8'))
output2 = md5_hash1.hexdigest()
print(f'output2--{output2}')

 

 

三、注意事项

1、编码问题

在调用 update() 方法时,确保数据是以字节形式传递的。通常可以使用 encode('utf-8') 将字符串转换为字节。

2、安全性

MD5 和 SHA-1 已经被证明不够安全,不建议用于密码存储等需要高安全性的场景。推荐使用 SHA-256 或更安全的算法。

3、多次传值

可以多次调用 update() 方法来添加数据,哈希对象会自动处理数据的拼接。

 

四、总结

hashlib 模块提供了多种哈希算法,可以用于数据完整性验证、密码存储等场景。通过创建哈希对象、更新数据和获取哈希值,你可以轻松地在 Python 中使用这些哈希算法。

 

http://www.lryc.cn/news/494534.html

相关文章:

  • 安装Fcitx5输入框架和输入法自动部署脚本(来自Mark24)-Ubuntu通用
  • 【IMF靶场渗透】
  • Zookeeper选举算法与提案处理概览
  • 深入了解 Adam 优化器对显存的需求:以 LLaMA-2 7B 模型为例 (中英双语)
  • 数据分析学习
  • PaddleOCR:一款高性能的OCR工具介绍
  • Transformers快速入门代码解析(一):注意力机制——Attention:Scaled Dot-product Attention
  • Git中HEAD、工作树和索引的区别
  • 【python量化教程】如何使用必盈API的股票接口,获取最新实时交易数据
  • 【C++】动态内存与智能指针——shared_ptr 和 new 结合使用
  • 遥感数据集:FTW全球农田边界和对应影像数据,约160万田块边界及7万多个样本
  • 马斯克的 AI 游戏工作室:人工智能与游戏产业的融合新纪元
  • URDF(描述机器人模型)和SDF(Gazebo中用于描述仿真环境)
  • 力扣380:O(1)时间插入、删除和获取随机数
  • 【C++boost::asio网络编程】有关socket的创建和连接的笔记
  • 超级灵感:前端页面功能统一管理方案
  • 力扣第 77 题 组合
  • (超详细图文)PLSQL Developer 配置连接远程 Oracle 服务
  • 元器件选型与参数13 电源的分类-线性电源参数 RT9013 AMS1117 PCB布局布线
  • RHEL7+Oracle11.2 RAC集群-多路径(multipath+udev)安装步骤
  • 每日速记10道java面试题03
  • Vue 3 的双向绑定原理
  • 如何使用 Chrome 无痕浏览模式访问网站?
  • Idea 2024.3 突然出现点击run 运行没有反应,且没有任何提示。
  • 【小白学机器学习36】关于独立概率,联合概率,交叉概率,交叉概率和,总概率等 概念辨析的例子
  • Spring Boot 项目——分层架构
  • wordpress网站首页底部栏显示网站备案信息
  • python面向对象编程练习
  • OpenCV_Code_LOG
  • 力扣第 74 题是 搜索二维矩阵