返回顶部
首页 > 资讯 > 后端开发 > Python >Python学习-hashlib
  • 379
分享到

Python学习-hashlib

Pythonhashlib 2023-01-31 01:01:52 379人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

python的hashlib提供了常见的摘要算法,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法。摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串

python的hashlib提供了常见的摘要算法,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法。

摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。

以常见的摘要算法MD5为例,计算出一个字符串的MD5值:

import hashlib

MD5 = hashlib.md5()
MD5.update(bytes('how to use md5 in Python hashlib?',encoding='utf-8'))
print(MD5.hexdigest())


d26a53750bc40b38b65a520292f69306

如果数据量很大,可以分块多次调用update(),最后计算的结果是一样的:

import hashlib

MD5 = hashlib.md5()
MD5.update(bytes('how to use md5 in ',encoding='utf-8'))
MD5.update(bytes('python hashlib?',encoding'utf-8'))
print(MD5.hexdigest())

改动一个字母,看看计算的结果是否完全不同。


MD5是最常见的摘要算法,速度很快,生成结果是固定的128 bit字节,通常用一个32位的16进制字符串表示。另一种常见的摘要算法是SHA1,调用SHA1和调用MD5完全类似:

import hashlib

SHA1 = hashlib.sha1()
SHA1.update(bytes('how to use sha1 in ',encoding='utf-8'))
SHA1.update(bytes('python hashlib?',encoding='utf-8'))
print(SHA1.hexdigest())

SHA1的结果是160 bit字节,通常用一个40位的16进制字符串表示。

比SHA1更安全的算法是SHA256和SHA512,不过越安全的算法不仅越慢,而且摘要长度更长。

以上加密算法虽然依然非常厉害,但时候存在缺陷,即:通过撞库可以反解。所以,有必要对加密算法中添加自定义key再来做加密。

import hashlib

hash = hashlib.md5(bytes('898oaFs09f',encoding="utf-8"))
hash.update(bytes('admin',encoding="utf-8"))
print(hash.hexdigest())


摘要算法应用

任何允许用户登录的网站都会存储用户登录的用户名和口令。如何存储用户名和口令呢?方法是存到数据库表中:

name    | passWord
--------+----------
michael | asddasda
lzj     | ddecewad
erics   | se232cw3

以明文保存用户口令,如果数据库泄露,所有用户的口令就落入***的手里;正确的保存口令的方式是不存储用户的明文口令,而是存储用户口令的摘要,比如MD5:

username | password
---------+---------------------------------
michael  | e10adc3949ba59abbe56e057f20f883e
lzj      | 878ef96e86145580c38c87f0410ad153
erics    | 99b1c2188db85afee403b1536010c2c9

当用户登录时,首先计算用户输入的明文口令的MD5,然后和数据库存储的MD5对比,如果一致,说明口令输入正确,如果不一致,口令肯定错误。

--结束END--

本文标题: Python学习-hashlib

本文链接: https://lsjlt.com/news/184189.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python学习-hashlib
    Python的hashlib提供了常见的摘要算法,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法。摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串...
    99+
    2023-01-31
    Python hashlib
  • python hashlib模块学习
    目录 hashlib 模块 破解密码 hmac 模块 1.干嘛用的: 对字符进行加密,其实就是一个自定义的字符编码表,...
    99+
    2023-01-31
    模块 python hashlib
  • python hashlib模块
    hashlib模块:用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法SHA512 安全性最高SHA和MD5 是2种算法,SHA算法比...
    99+
    2023-01-30
    模块 python hashlib
  • python模块——hashlib
    python模块——hashlibhashlib模块是对许多hash函数的一个公共接口new(name, string = '')    执行给定的hash函数来返回一个新的hash对象,使用给定的字符串数据初始化hash对象。如:    ...
    99+
    2023-01-31
    模块 python hashlib
  • Python hashlib、hmac模
    Python中的用于加密的函数位于hashlib,hmac模块中,都是内置模块,直接导入即可使用 hashlib模块实现了md5,sha1,sha224,sha256,sha384,sha512等算法,可以通过hashlib.algori...
    99+
    2023-01-31
    Python hashlib hmac
  • python模块之hashlib
    hashlib模块实现了多种安全哈希和信息摘要算法的通用接口,包括FIPS中定义的SHA1, SHA224, SHA256, SHA384, SHA512以及RFC 1321中定义的MD5 注意点:1. adler32及crc32哈希由z...
    99+
    2023-01-31
    模块 python hashlib
  • python hashlib模块算法
    python中的hashlib为我们提供了常见的摘要算法,如MD5、sha1 那么现在问题来了,摘要算法是what? 摘要算法又称哈希算法、散列算法。 它指的是把任意长度的数据data,通过函数f(),转换为一个长度固定的摘要diges...
    99+
    2023-01-30
    算法 模块 python
  • Python hashlib模块详情
    目录1. hashlib 模块概述1.1hashlib 模块特点1.2hashlib 模块使用步骤2. hashlib 工作原理2.1hash 算法特点2.2hash 构造方法2.3...
    99+
    2024-04-02
  • Python学习
    Python是创始人吉多•范罗苏姆(Guido van Rossum)在1989年圣诞节期间,在阿姆斯特丹,为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,而在给自己新创造的计算机语言起名字的时候,由于其是,自于七十年代风靡全球的英国六...
    99+
    2023-01-31
    Python
  • Python 学习
    第一次学习python查阅的资料一,熟悉基本在正式介绍python之前,了解下面两个基本操作对后面的学习是有好处的:1)基本的输入输出 可以在Python中使用+、-、*、/直接进行四则运算。11+3*3查看全部10(2)导入模块 使用im...
    99+
    2023-01-31
    Python
  • 学习python
    亲爱的朋友:     欢迎你!很高兴能在这里见到你,你能来到这里说明你真的很喜欢python,很想把python给学好!我觉的你很幸运,开始我学python的时候比较少资料,学起来也比较头疼,现在随着python越来越流行,资料也越来越多,...
    99+
    2023-01-31
    python
  • Python学习:Python form
    从Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。基本语法是通过 {} 和 : 来代替以前的 % 。 相对基本格式化输出采用‘%’的方法,format()功能更强大,该...
    99+
    2023-01-31
    Python form
  • python学习笔记--趣学Python
    由反弹球和球拍构成的游戏。球会在屏幕上飞过来,玩家要用球拍把它弹回去 画布和画弹球 引入模块 #Tkinter -- Python的标准GUI库,Tk 接口,是python 内置的安装包 from tkinter import * i...
    99+
    2023-01-31
    学习笔记 python Python
  • python学习--DataFrame
    目录 一、DataFrame对象的创建 1、根据列表创建: 情况1:由二维列表 情况2:由元组tuple组成的列表 情况3:由字典dict组成的列表 情况4:由数组array组成的列表 情况5:由序列series组成的列表 2、根据字典创...
    99+
    2023-10-02
    python 开发语言 pandas
  • Python学习 (1)
    一、基本语法: import 与 from...import 在 python中 用import 或者from...import 来导入相应的模块。 将整个模块(somemodule)导入,格式为:import somemodule 从...
    99+
    2023-01-30
    Python
  • python学习(二)
    #浏览器GET请求,发送的参数有中文时,需要编码再拼接参数发送from urllib import requestimport urlliburl = r"http://www.baidu.com/s"#百度搜索 浏览器userage...
    99+
    2023-01-31
    python
  • Python学习day01
    age = 23 count=0 while count<3: guess_age = int (input("My age:")) if age ==guess_age: print("n...
    99+
    2023-01-30
    Python
  • python学习_1
    1.python2和python3 从宏观上讲,python2源码不标准、混乱、重复,和龟叔的理念背道而驰。 在python3上,实现了源码的统一化和标准化,去除了重复的代码。   2.编译型语言和解释型语言 编译型:一次性将所有的程序编...
    99+
    2023-01-30
    python
  • python-flask学习
    学习了一段时间python之后,因为一些现实要求和个人学习需要,所以开始对flask进行学习。找了一些博客和一本书《Flask Web开发》,书还没怎么仔细看,目前跟着博客学,还是有一些收获。下面将我觉得写的比较好的博客推荐一下。 duk...
    99+
    2023-01-30
    python flask
  • Python学习:ModuleNotFo
    最近在学《Python编程:从入门到实践》,16.2小结中 from pygal.i18n import COUNTRIES 获取两个字母的国别码,我用的pygal的版本是2.4.0(终端 pip show pygal 查看版本) 这...
    99+
    2023-01-31
    Python ModuleNotFo
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作