hashlib模块 md5 sha1
Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等
它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)
对于同一个字符串,不管这个字符串有多长,只要是相同的,
无论在任何环境下,多少次执行,在任何语言中
使用相同的算法\相同的手段得到的结果永远是相同的
只要不是相同的字符串,得到的结果一定不同
md5算法,32位的字符串,每个字符都是一个十六进制
md5算法 效率快 算法相对简单 需要进行加盐操作
用法 :
1.先创建一个对象
2.对象.update('字符串'.encode=('utf-8'))
3.print(对象.hexdigest())
s1 = 'ben' # 7fe4771c008a22eb763df47d19e2c6aa
s2 = 'abc123' # c203eb9f0cdbe64ec22e214b759b7ba3 md5_obj = hashlib.md5() # 1.先创建一个对象
md5_obj.update(s1.encode('utf-8')) # 2. update(对象.编码格式)
res = md5_obj.hexdigest() # 3. 给一个变量接收 对象.hexdigest()
print(res, len(res), type(res)) # 得到md5值 md5_obj.update(s2.encode('utf-8'))
res2 = md5_obj.hexdigest()
print(res2, len(res2), type(res2))
小小的输入生成md5的程序
def md5(name):
name_obj = hashlib.md5()
name_obj.update(name.encode('utf-8'))
ret = name_obj.hexdigest() return ret name = input('请输入你的名字>>>')
my_md5 = md5(name)
print(my_md5)
加盐
可能会撞库,所以必须进行加盐
def md5(name):
name_obj = hashlib.md5()
name_obj.update((name + name).encode('utf-8')) # 可以给想加密的东西再加上别的字符
ret = name_obj.hexdigest() return ret name = input('请输入你的名字>>>')
my_md5 = md5(name)
print(my_md5)
动态加盐
username = input('username : ')
passwd = input('password : ')
md5obj = hashlib.md5(username.encode('utf-8'))
md5obj.update(passwd.encode('utf-8'))
print(md5obj.hexdigest())
文件的一致性校验 利用md5值是否相同来判断
md5_obj = hashlib.md5()
with open('5.序列化模块_shelve.py', 'rb') as f:
md5_obj.update(f.read())
ret1 = md5_obj.hexdigest() md5_obj = hashlib.md5()
with open('5.序列化模块_shelve.py.bak', 'rb') as f:
md5_obj.update(f.read())
ret2 = md5_obj.hexdigest()
print(ret1, ret2)
弱文件太大, 内存读不下, 可以:
按行读: 文本, 视频, 音乐, 图片, bytes
按字节读: 10240 = 1M
md5 = hashlib.md5()
md5.update('hello,world,wow'.encode('utf-8'))
ret = md5.hexdigest()
print(ret) # f733a03f0f1caac0b7ac905f25bf4fd2 md5 = hashlib.md5()
md5.update('hello,'.encode('utf-8'))
md5.update('world,'.encode('utf-8'))
md5.update('wow'.encode('utf-8'))
ret = md5.hexdigest()
print(ret)
大文件的已执行校验
循环的读取文件内容
循环的来update
md5_obj = hashlib.md5()
with open('file', 'rb') as f:
md5_obj.update(f.read())
# 循环的读取文件内容
# 循环的来update
print(md5_obj.hexdigest())
sha1也是一个算法, 40位的字符串, 每个字符都是一个十六进制 算法相对复杂 计算速度也慢 用的人少,所以会比md5更安全一点 和md5用法一样
sha_obj = hashlib.sha1()
sha_obj.update(s1.encode('utf-8'))
res = sha_obj.hexdigest()
print(res, len(res), type(res))
小练习
# 写成一个函数
# 参数 : 文件1的路径,文件2的路径,默认参数 = 1024000
# 计算这两个文件的md5值
# 返回它们的一致性结果 T/F
hashlib模块 md5 sha1的更多相关文章
- 模拟ssh、黏包、hashlib模块(MD5)
待补充..... 一.模拟ssh 二.黏包 1.黏包现象 让我们基于tcp先制作一个远程执行命令的程序(命令ls -l ; lllllll ; pwd) res=subprocess.Popen(cm ...
- python hashlib模块 md5加密 sha256加密 sha1加密 sha512加密 sha384加密 MD5加盐
python hashlib模块 hashlib hashlib主要提供字符加密功能,将md5和sha模块整合到了一起,支持md5,sha1, sha224, sha256, sha384, ...
- Python中hashlib模块
介绍hashlib hashlib 是一个提供了一些流行的hash算法的 Python 标准库.其中所包括的算法有 md5, sha1, sha224, sha256, sha384, sha512. ...
- Python常用模块之hashlib模块
1.hashilib模块的功能 python的hashlib提供了常见的摘要算法,如MD5, SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换成一 ...
- python笔记之hashlib模块
涉及加密服务:14. Cryptographic Services其中 hashlib是涉及安全散列和消息摘要,提供多个不同的加密算法借口,如SHA1.SHA224.SHA256.SHA384.SHA ...
- 用python计算md5,sha1,crc32
Linux下计算md5sum,sha1sum,crc: 命令 输出 $md5sum hello f19dd746bc6ab0f0155808c388be8ff0 hello $sha1sum hel ...
- python hashlib模块 logging模块 subprocess模块
一 hashlib模块 import hashlib md5=hashlib.md5() #可以传参,加盐处理 print(md5) md5.update(b'alex') #update参数必须是b ...
- Python hashlib模块 (主要记录md5加密)
python提供了一个进行hash加密的模块:hashlib 下面主要记录下其中的md5加密方式(sha1加密一样把MD5换成sha1) >>> import hashlib > ...
- Python3学习之路~5.12 hashlib & hmac & md5 & sha模块
hashlib模块用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法 import md5 h ...
随机推荐
- Trie-648. Replace Words
In English, we have a concept called root, which can be followed by some other words to form another ...
- 正则表达式学习之grep,sed和awk
正则表达式是用于描述字符排列和匹配模式的一种语法,它主要用于字符串的模式分割.匹配.查找以及替换操作. 描述一个正则表达式需要字符类.数量限定符.位置限定符.规定一些特殊语法表示字符类,数量限定符和位 ...
- webpack快速入门——给webpack增加babel支持
1.Babel的安装与配置 Babel其实是几个模块化的包,其核心功能位于称为babel-core的npm包中,webpack可以把其不同的包整合在一起使用,对于每一个 你需要的功能或拓展,你都需要安 ...
- jsp文件和HTML互相引入的乱码问题
1.在jsp中用include指令引入HTML文件时遇到的问题: jsp.html都可以正确的显示,当jsp引入html时访问jsp页面HTML出现乱码,jsp原有的输出无乱码,解决方法: 在HTML ...
- 用c语言实现三子棋
1 game.c://实现三子棋的.c文件 #define _CRT_SECURE_NO_WARNINGS #include"game.h" void init_board(cha ...
- iOS9新特性-UIStackView
1. UIStackView相关属性理解 UIStackView是iOS9之后推出的,我也是第一次接触,在学习的过程中对于其中的相关属性,尤其是对其中的distribution几个属性值,一知半解的, ...
- 剑指offer三十六之两个链表的第一个公共结点
一.题目 输入两个链表,找出它们的第一个公共结点. 二.思路 如果存在共同节点的话,那么从该节点,两个链表之后的元素都是相同的.也就是说两个链表从尾部往前到某个点,节点都是一样的.我们可以用两个栈分别 ...
- 【优化】Filddler用于移动端
Fiddler是一个非常强大的Web调试工具,它能捕获所有客户端和服务器的http和https请求,我们可以对请求监视.设置断点,也能修改输入输出数据,这些特性使得Fiddler成为广大web开发者的 ...
- 《Android应用性能优化》3——电量、渲染
7.延长电池续航时间 尽管应用有时看起来没做多少事,但实际上可能会很耗电,运行不了多久就会把电量榨干,使设备开机不到半天就没电了.那些被归为“电池杀手”的应用,最终的宿命就是被删除.得差评.不挣钱.因 ...
- 分析org.rpgpoet.Music.wizards.length
例子如下: package bazola; public class Gabriel { static int n = org.rpgpoet.Music.wizards.length; } pack ...