pythonhash使用(详解python中的hashlib模块的使用)
pythonhash使用
详解python中的hashlib模块的使用hashlib
hashlib主要提供字符加密功能,将md5和sha模块整合到了一起,支持md5,sha1, sha224, sha256, sha384, sha512等算法
hashlib模块
#哈希算法也叫摘要算法,相同的数据始终得到相同的输出,不同的数据得到不同的输出。
#(1)哈希将不可变的任意长度的数据,变成具有固定长度的唯一值
#(2)字典的键值对映射关系是通过哈希计算的,哈希存储的数据是散列(无序)
# 应用场景:在需要效验功能时使用
用户密码的 => 加密,解密
相关效验的 => 加密,解密
hashlib中的md5算法
|
# 第一步是引包 import hashlib # 创建一个md5算法的对象 hs = hashlib.md5() # print(hs) # update中的 参数必须是二进制字节流 hs.update( "123" .encode()) ## hexdigest 返回32位十六进制的字符串(固定长度) ## 用一个hsvar来接收经过哈希算法返回的值 hsvar = hs.hexdigest() |
#加盐 (就是在简单的算法中进行加入混肴参数)
语法格式如下:
|
#首先在实例化hashlib中的md5对象的时候,加入混淆参数key,以此达到更加复杂的加密) #加入的key参数一定也要是字节流 hs2 = hashlib.md5( "abcd" .encode()) hs2.update( "123123" .encode()) hs2var = hs2.hexdigest() |
加盐后的好处就是,增加了加密的安全性,使其不那么容易被破解
但因为hash算法是被公开的算法,其安全性不那么好,一些简单的加密 值很容易被逆向破解出来,说逆向破解也不那么准确,
一般来说,破解此类算法只能使用穷举法, 可以将 跑出来的值存入到一个大的数据库中,哈希算法得出的值有唯一性,所以可以反向查询已有的hash值来得到原始数据,当然这种网站也有, 我百度上看到的一个网站,你们可以进去看一看,一般的哈希值都能查询到原数据,只要他们数据库中有的话.
所以说最好的方法就是我们要加盐,去加入复杂混肴参数,这样的话大大提高了数据加密的安全性
链接: https://www.cmd5.com/ md5解密(本链接只作为学习使用,勿将其使用到任何非法用途)
在开发编程中,常用到hash算法的方面应该有用户的注册登录
下面有我写的一个实例,供大家参考(为了方便大家的阅读,这个注册登录功能我没有完善,比如说用正则去卡用户名和密码的格式等等,)
|
import hashlib #定义一个加密函数,将传入的参数转换成32位的哈希值并返回 def md5(pwd): md5_password = hashlib.md5( "abd" .encode()) md5_password.update(pwd.encode()) return md5_password.hexdigest() #定义一个登录函数,将传入的账号密码与本地密码文件进行匹配,如果匹配到返回true def login(user,pwd): with open ( "database" , "r" ,encoding = "utf-8" ) as fp: for line in fp : u,p = line.strip().split( "|" ) if u = = user and p = = md5(pwd): return true #定义一个注册的函数,将用户传入的账号密码写入到本地的密码文件中 def register(user,pwd): with open ( "database" , "w" ,encoding = "utf-8" ) as fp: temp = user + "|" + md5(pwd) fp.write(temp) #index菜单,给用户的交互 choice = input ( "1表示登录, 2表示注册:" ).strip() if choice = = "2" : user = input ( "用户名:" ) pwd = input ( "密码:" ) register(user,pwd) elif choice = = "1" : user = input ( "用户名:" ) pwd = input ( "密码:" ) r = login(user,pwd) if r = = true: print ( "登录成功" ) else : print ( "登录失败" ) else : print ( "账号不存在" ) |
hashlib中的sha算法
•# sha 加密效率低,算法精密,安全性高
•sha: secure hash algorithm(安全哈希算法)
sha是美国国家标准与技术研究院与美国国家安全局设计,从94年以来被广泛使用的加密算法.sha系列中的sha1, sha224, sha2556适用于长度不超过2^64二进制位的消息。sha384和sha512适用于长度不超过2^128二进制位的消息。不过,这个也不太安全.2005年的时候国内王小云教授及其团队在sha1算法的破译上就已经取得了很大的成就.今年谷歌已经攻破了sha1算法.另外,matthew green(https://twitter.com/matthew_d_green)在这一领域也有不错的成就.
|
import hashlib #实例化sha1对象 hs3 = hashlib.sha1() #去将要去加密的数据通过一个方法放入对象中 hs3.update( '123123' .encode()) #调用对象中的方法,计算并输出加密后的40位的哈希值 hsvar = hs3.hexdigest() |
sha算法常用的有 sha1 sha512等,语法一样,只不过输出的哈希值的长度不一样,所以就不一一列举了
总结
以上所述是小编给大家介绍的python中的hashlib模块的使用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对开心学习网网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!原文链接:https://www.cnblogs.com/bruce-chen/p/10742690.html
- python简单代码实例(Python实现 版本号对比功能的实例代码)
- python给一个数字md5加密(Python写一个基于MD5的文件监听程序)
- python爬虫怎么爬取vip资源(Python网络爬虫之爬取微博热搜)
- python抽奖转盘代码(详解python--模拟轮盘抽奖游戏)
- python动态数组原理(Python实现的旋转数组功能算法示例)
- pythonselenium自动化使用教程(selenium python 实现基本自动化测试的示例代码)
- python单例编程(浅谈Python反射 & 单例模式)
- python微信支付接口(Python提取支付宝和微信支付二维码的示例代码)
- python注册码实现(python实现Virginia无密钥解密)
- python3html怎么转换成pdf(Python实现html转换为pdf报告生成pdf报告功能示例)
- python发送钉钉消息(钉钉群自定义机器人消息Python封装的实例)
- python迭代函数(详解Python中的内建函数,可迭代对象,迭代器)
- pythonmatplotlib绘制立体图形(python3使用matplotlib绘制散点图)
- python处理各种xml文件(Python使用sax模块解析XML文件示例)
- python与mysql的联系(MySQL和Python交互的示例)
- python虚拟环境的使用方法(详解python配置虚拟环境)
- 谢广坤,你这么欺负谢腾飞,良心不会痛吗(你这么欺负谢腾飞)
- 乡村爱情15 宋晓峰怀疑自己孩子,腾飞与姜奶奶亲子鉴定出结果(宋晓峰怀疑自己孩子)
- 《乡村爱情13》开播,新版刘能以假乱真,编剧思维进入瓶颈(新版刘能以假乱真)
- 当年的 白洋淀战神 练肌肉 嘎子哥也成为行走的荷尔蒙(当年的白洋淀战神)
- 肌肉小子陈康, 亚洲巨兽 黄哲勋,哪个才是你的菜(肌肉小子陈康亚洲巨兽)
- 新闻周刊 青岛网红 赵厂长 编段子一箩筐输出快乐,陪父亲十二载勇斗病魔(新闻周刊青岛网红)
热门推荐
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9