Python hashlib加密模块
hashlib模块
简介:
hashlib模块是一个提供了字符串加密功能的模块,包含MD5和SHA的加密算法。具体的加密支持有:
MD5,sha1,sha224,sha256, sha384, sha512, blake2b,blake2s,sha3_224, sha3_256, sha3_384, sha3_512, shake_128, shake_256
该模块在用户登录认证方面应用广泛,对文本加密也很常见。文件和文件之间的校验。该模块调用简单,接下来来看看。
基本调用
- 基本步骤,加密算法使用方法都一样的。以MD5加密为例:
- 创建一个MD5加密对象
- 对字符串进行转换为byte后,进行算法加密
- 进行16进制的显示
- 代码:
# 导入hashlib模块
import hashlib
# 实例化一个MD5的加密对象
md5 = hashlib.md5()
# 调用MD5对象的update方法,进行字符串加密(这里要传入的是编码后字节)
md5.update('hello'.encode('utf8'))
# 返回一个双倍长度,仅包含16进制数字的字符串
ret = md5.hexdigest()
# 打印加密返回后的字符串
print(ret)
可以创建的加密算法有:md5,sha1, sha224, sha256, sha384, sha512
# 实例化一个MD5加密对象
md5 = hashlib.md5()
# 实例化一个sha1加密对象
sha1 = hashlib.sha1()
# 实例化一个sha224加密对象
sha224 = hashlib.sha224()
# 实例化一个sha256加密对象
sha256 = hashlib.sha256()
如果数据量较大,可以分块多次调用update(),最后的计算结果都是一样的
md5 = hashlib.md5()
md5.update('how to use md5 in '.encode('utf8'))
md5.update('python hashlib?'.encode('utf8'))
print(md5.hexdigest())
new_md5 = hashlib.md5()
new_md5.update('how to use md5 in python hashlib?'.encode('utf8'))
print(new_md5.hexdigest())
# 结果
d26a53750bc40b38b65a520292f69306
d26a53750bc40b38b65a520292f69306
加盐
注:但是通常这样的密码就相当于一个固定的加密字符串,如果有的人专门写一个这样的字典,里面存储了各种字符串组合及对应的MD5加密字符串,然后去暴力测试,这样也就有可能计算出我们真正的密码,所以,要确保存储的用户口令不是那些已经被计算出来的常用口令的MD5,这一方法通过对原始口令加一个复杂字符串来实现,俗称“加盐”:
代码:
# 没有加盐的字符串加密
new_md5 = hashlib.md5()
new_md5.update('how to use md5 in python hashlib?'.encode('utf8'))
print(new_md5.hexdigest())
# 加盐以后的字符串加密
new_md5 = hashlib.md5('我的梦想是冲出地球!'.encode('utf8')) # 加盐
new_md5.update('how to use md5 in python hashlib?'.encode('utf8'))
print(new_md5.hexdigest())
# 结果
d26a53750bc40b38b65a520292f69306
52841008c37295e291f426bbabe56f15
动态加盐
# 意义就是在加盐的地方使用一个变量比如,用户名
user = input('user>>: ')
pwd = input('pwd>>: ')
md5 = hashlib.md5('{0}的梦想是去全世界各种地方逛逛'.format(user).encode('utf8'))
md5.update(pwd.encode('utf8')) # 更新密码
print(md5.hexdigest())
校验文件时,由于文件过大,计算MD5值的方法:
def file_get_md5(file):
md5 = hashlib.md5()
with open(file, mode='rb') as fp: # 打开文件
for line in fp: # 循环
md5.update(line) # 每次更新
return md5.hexdigest()
Python hashlib加密模块的更多相关文章
- python: hashlib 加密模块
加密模块hashlib import hashlib m=hashlib.md5() m.update(b'hello') print(m.hexdigest()) #十六进制加密 m.update( ...
- python模块知识三 hashlib 加密模块、collections、re模块
8.hashlib 加密模块 主要用于加密和校验 常见密文:md5,sha1,sha256,sha512 只要明文相同,密文就相同 只要明文不相同,密文就是不相同的 不能反逆(不能解密)--md5 ...
- python 基础(十七)--hashlib加密模块
hashlib加密模块 两种方式使用 字符串是中文时需要先编码成utf-8 常用加密算法:md5,sha1(已被破解)等... >>> a= hashlib.md5() >&g ...
- hashlib加密模块和logging模块,购物车项目
hashlib加密模块 简介 hashlib模块是一个提供了字符串加密功能的模块,包含MD5和SHA的加密算法.具体的加密支持有: MD5,sha1,sha224,sha256, sha384, sh ...
- python hashlib模块 md5加密 sha256加密 sha1加密 sha512加密 sha384加密 MD5加盐
python hashlib模块 hashlib hashlib主要提供字符加密功能,将md5和sha模块整合到了一起,支持md5,sha1, sha224, sha256, sha384, ...
- python的加密模块(md5,sha,crypt)学习
python的加密模块(md5,sha,crypt)学习 命令行使用python MD5: yinguicai@Cpl-IBP-Product:~/data/work/svn/v1.4.0_dev/A ...
- hashlib加密模块
python hashlib密码加密 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/dss_dssssd/article/details/828 ...
- python hashlib、configparse、logging
一.hashlib 1.Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 2.摘要算法 通过摘要函数f()对任意长度的数据data计算出固定长度的摘要digest,目 ...
- hashlib加密模块,加密方式:(MD5,sha级别)
三,hashlib模块 算法介绍 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一 ...
随机推荐
- Greenplum 行存、列存,堆表、AO表的原理和选择
转载自: https://github.com/digoal/blog/blob/master/201708/20170818_02.md?spm=a2c4e.11153940.blogcont179 ...
- 【IOI2019】2048矩形模拟
/* dos windows 25*80 */ #include <algorithm> #include <windows.h> #include <iostream& ...
- Java 中的 SimpleDateFormat 【 parse 和 format 】【转换时间格式】
在 Java 里面有很多特别方便的函数(尽管术语可能不这么说)可以供我们使用,让一些本来要写好长好多的代码的事情变得仅仅几行就解决了. 在 SimpleDateFormat 中,有以下特定的规则: G ...
- redisson spring boot starter 做分布式锁
使用redisson做分布式锁 分布式锁 在java中单体应用中,我们如果想要保证一个接口或者服务.方法当下只有一个线程在运行,我们可以通过JDK提供的Lock.Semaphore.同步锁等多种方式实 ...
- dp之斜率优化
前几天想练练思维,所以从cf上随便找了一道dp题,看完题意后第一感觉很简单,就是简单的区间dp题,但是看到数据范围的我顿时就懵了,(1≤n≤105) emmmmmmmm,按照普通的思路肯定会超时的.. ...
- 使用 Nexus3 Repository Manager 搭建 npm 私服
公司里一般都有自己的私服,用于管理封装的工具插件等,Nexus2主要是用于maven/gralde仓库的统一管理,Nexus3则添加了npm插件,可以对npm提供支持,其实用于npm仓库管理的还有一个 ...
- [ambari环境搭建](未完待续)
[安装] https://blog.csdn.net/Happy_Sunshine_Boy/article/details/86595945#commentBox https://www.jiansh ...
- jquery报变量没定义错误的原因
该变量定义的范围:不在使用的方法中:
- 彻底搞懂Python的字符编码
前言:中文编码问题一直是程序员头疼的问题,而Python2中的字符编码足矣令新手抓狂.本文将尽量用通俗的语言带大家彻底的了解字符编码以及Python2和3中的各种编码问题. 一.什么是字符编码. 要彻 ...
- CodeForces - 1175D Array Splitting(数组划分+后缀和+贪心)
You are given an array a1,a2,…,ana1,a2,…,an and an integer kk. You are asked to divide this array in ...