yyz notes yyz notes
首页
  • RBAC权限设计
  • 架构图标设计
  • 账号体系
  • python基础
  • python高级
  • python模块
  • python设计模式
  • python数据结构与算法
  • django
  • django-DRF
  • flask
  • 直接设计开源pip包
  • 直接设计开源项目
  • python示例题/脚本
  • python面试题
  • golang基础
  • golang高级
  • golang常用组件
  • gin框架
  • es6
  • javascript
  • react
  • vue
  • TypeScript
  • mysql
  • redis
  • minio
  • elasticsearch
  • mongodb
  • 消息队列
  • 自动化测试
  • 操作系统

    • linux
    • windows
  • nginx
  • docker
  • k8s
  • git
  • ldap
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

益章

可乐鸡翅
首页
  • RBAC权限设计
  • 架构图标设计
  • 账号体系
  • python基础
  • python高级
  • python模块
  • python设计模式
  • python数据结构与算法
  • django
  • django-DRF
  • flask
  • 直接设计开源pip包
  • 直接设计开源项目
  • python示例题/脚本
  • python面试题
  • golang基础
  • golang高级
  • golang常用组件
  • gin框架
  • es6
  • javascript
  • react
  • vue
  • TypeScript
  • mysql
  • redis
  • minio
  • elasticsearch
  • mongodb
  • 消息队列
  • 自动化测试
  • 操作系统

    • linux
    • windows
  • nginx
  • docker
  • k8s
  • git
  • ldap
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • python基础

  • python高级

    • python加密算法

      • hashlib
        • hashlib的基本概念
          • 使用
    • python正则表达式

  • python模块

  • python设计模式

  • python数据结构与算法

  • django

  • django-DRF

  • flask

  • 自己设计开源pip包

  • 自己设计开源项目

  • python小示例

  • python面试题

  • python
  • python高级
  • python加密算法
YiZhang-You
2023-05-17
目录

hashlib

# hashlib的基本概念

可以在:base64在线解码 进行测试

  1. 什么叫hash:hash是一种算法(不同的hash算法只是复杂度不一样)(3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法),该算法接受传入的内容,经过运算得到一串hash值
  2. hash值的特点是(hash值/产品有三大特性:):
    1. 只要传入的内容一样,得到的hash值必然一样=====>要用明文传输密码文件完整性校验
    2. 不能由hash值返解成内容=======》把密码做成hash值,不应该在网络传输明文密码(只能有内容返回hash值)
    3. 只要使用的hash算法不变,无论校验的内容有多大,得到的hash值长度是固定的(如从网上下载文件要进行hash校验,保证网络传输没有丢包)

基于2.1和2.3可以做文件下载一致性的校验 基于2.1和2.2可以对用户密码进行加密 hash算法就像一座工厂,工厂接收你送来的原材料(可以用m.update() 为工厂运送原材料),经过加工返回的产品就是hash值

'''
加密算法
!!!!!  base64在线解码
'''
import hashlib

msg = "Haoop大数据"
md5 = hashlib.md5(msg.encode("utf-8"))  # 32位 因为不识别字符串,所以要encode()解码
print(md5, type(md5))
print(len(md5.hexdigest()), "md5:", md5.hexdigest())  # 打印加密算法的值 d2728ceba2d1849328657e1f84cd19c3

sha1 = hashlib.sha1(msg.encode("utf-8"))  # 40 95b3c237de92cee3a575178644b94bd64914a62b
print(len(sha1.hexdigest()), "sha1:", sha1.hexdigest())

sha256 = hashlib.sha256(msg.encode("utf-8"))  # 64 6ccd2fa719650a6de9d997836a1d321272407876d981b7ed8a1ab5d1643c8cee7
print(len(sha256.hexdigest()), "sha512:", sha256.hexdigest())
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 使用

例1:

import hashlib

# # ######## 256 ########
# # 1、造出hash工厂
hash = hashlib.sha256('898oaFs09f'.encode('utf8'))  # 同一种hash算法得到的长度是固定的
# # 2、运送原材料
hash.update('alvin'.encode('utf8'))  # 工厂传入的原材料都是bytes类型
# # 3、产出hash值
print(hash.hexdigest())  # e79e68f070cdedcfe63eaf1a2e92c83b4cfb1b5c6bc452d214c1b7e77cdfd1c7
1
2
3
4
5
6
7
8
9

例2:

'''
#例1:  解析:一般做web会把用户的注册的密码加密,并保存到数据库。
等用户下一次输入密码,就把新输入的密码也用同样的加密格式,在与数据库的密码比较。
如果两次的加密密码一样,就登陆成功,否则失败
'''
password = "123456"
list1 = []
md5 = hashlib.md5(password.encode("utf-8"))  # 把原来的密码加密成md5算法加密
list1.append(md5.hexdigest())  # 把加密的值保存到列表中
# 输入
pwd = input("输入密码")
pwd = hashlib.md5(pwd.encode("utf-8"))
newpwd = pwd.hexdigest()  # 把新输入的值加密
print(list1, "\\n", newpwd)

for i in list1:
    if newpwd == i:  # 两次进行比较
        print("登陆成功")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

1

编辑 (opens new window)
上次更新: 2023/05/17, 23:08:21
获取异常信息
正则表达式

← 获取异常信息 正则表达式→

最近更新
01
配置yun源
05-24
02
linux-配置python虚拟环境
05-24
03
linux文件目录管理
05-24
更多文章>
Theme by Vdoing | Copyright © 2023-2023 yizhang | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式