Python学习笔记——基础篇【第六周】——hashlib模块

常用模块之hashlib模块 

用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法

import md5
hash = md5.new()
hash.update('admin')
print hash.hexdigest()
MD5-废弃
import shahash = sha.new()
hash.update('admin')
print hash.hexdigest()
sha-废弃
import hashlib# ######## md5 ########hash = hashlib.md5()
hash.update('admin')
print hash.hexdigest()# ######## sha1 ########hash = hashlib.sha1()
hash.update('admin')
print hash.hexdigest()# ######## sha256 ########hash = hashlib.sha256()
hash.update('admin')
print hash.hexdigest()# ######## sha384 ########hash = hashlib.sha384()
hash.update('admin')
print hash.hexdigest()# ######## sha512 ########hash = hashlib.sha512()
hash.update('admin')
print hash.hexdigest()

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

import hashlib# ######## md5 ########hash = hashlib.md5('898oaFs09f')
hash.update('admin')
print hash.hexdigest()

 还不够吊?python 还有一个 hmac 模块,它内部对我们创建 key 和 内容 再进行处理然后再加密

import hmac
h = hmac.new('wueiqi')
h.update('hellowo')
print h.hexdigest()

 不能再牛逼了!!!

 

 1 import hashlib
 2  
 3 m = hashlib.md5()
 4 m.update(b"Hello")
 5 m.update(b"It's me")
 6 print(m.digest())
 7 m.update(b"It's been a long time since last time we ...")
 8  
 9 print(m.digest()) #2进制格式hash
10 print(len(m.hexdigest())) #16进制格式hash
11 '''
12 def digest(self, *args, **kwargs): # real signature unknown
13     """ Return the digest value as a string of binary data. """
14     pass
15  
16 def hexdigest(self, *args, **kwargs): # real signature unknown
17     """ Return the digest value as a string of hexadecimal digits. """
18     pass
19  
20 '''
21 import hashlib
22  
23 # ######## md5 ########
24  
25 hash = hashlib.md5()
26 hash.update('admin')
27 print(hash.hexdigest())
28  
29 # ######## sha1 ########
30  
31 hash = hashlib.sha1()
32 hash.update('admin')
33 print(hash.hexdigest())
34  
35 # ######## sha256 ########
36  
37 hash = hashlib.sha256()
38 hash.update('admin')
39 print(hash.hexdigest())
40  
41  
42 # ######## sha384 ########
43  
44 hash = hashlib.sha384()
45 hash.update('admin')
46 print(hash.hexdigest())
47  
48 # ######## sha512 ########
49  
50 hash = hashlib.sha512()
51 hash.update('admin')
52 print(hash.hexdigest())
View Code

更多关于md5,sha1,sha256等介绍的文章看这里https://www.tbs-certificates.co.uk/FAQ/en/sha256.html

 

转载于:https://www.cnblogs.com/yard/p/5521182.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/430509.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle数据库领域,菜鸟成长课程之《Oracle数据库职业直通车》,引领大家真正进入Oracle数据库领域...

课程简介:近年来,Oracle数据库无疑是全球数据库领域中的领航者, Oracle DBA的待遇节节攀升, 导致了许多人希望转入这个行业。而Oracle数据库又因它的庞大和复杂另很多人望而却步,找不到入门的捷径。本课程是专门为在校…

虚拟存储

为解决日益增长的内存需要,有以下几种解决办法: 1.覆盖: 将程序划分成几个模块,将没有调用关系的模块(即不会同时运行的模块)分成一组,其中每组所占的内存大小为组内所需内存最大的模块的内存&a…

oracle 12542,TNS-12542: TNS:address already in use

研发说无法访问数据库,数据库正常运行,那就可能是监听有问题,一波简单操作搞定。[oracleentegor-1 ~]$ lsnrctl startLSNRCTL for Linux: Version 11.2.0.4.0 - Production on 17-AUG-2018 09:04:01Copyright (c) 1991, 2013, Oracle. All ri…

作为前端应当了解的Web缓存知识

缓存优点 通常所说的Web缓存指的是可以自动保存常见http请求副本的http设备。对于前端开发者来说,浏览器充当了重要角色。除此外常见的还有各种各样的代理服务器也可以做缓存。当Web请求到达缓存时,缓存从本地副本中提取这个副本内容而不需要经过服务器。…

怎么恢复oracle的包,【学习笔记】使用dbms_backup_restore包恢复数据库

天萃荷净使用dbms_backup_restore包恢复数据库Oracle提供了一个包:DBMS_BACKUP_RESTORE包是由dbmsbkrs.sql 和 prvtbkrs.plb 这两个脚本创建的.catproc.sql 脚本运行后会调用这两个包.所以是每个数据库都有的这个包是Oracle服务器和操作系统之间IO操作的接口.由恢复管理器直接调…

No module named 'urllib2'

import urllib2 response urllib2.urlopen(http://www.baidu.com/) html response.read() print html 报错 import urllib2ImportError: No module named urllib2 import urllib.request respurllib.request.urlopen(http://www.baidu.com) htmlresp.read() print(h…

oracle负数怎么比较大小,输出负数【oracle学习吧】_百度贴吧

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼题目:哪些选项输出一个负数?如果你确信以下都不对,那么请选E[sql]A DECLAREl_date2 DATE : date 2012-12-20;l_date1 DATE : l_date2 - 1;BEGINDBMS_OUTPUT.put_line (MONTHS_BETWEEN (l_date1, …

文件属性操作

//文件类型 :文件 file 文件夹(目录) dir两种 //1.获取文件类型 filetype("路径"); //如果是文件返回file 如果是目录返回dir//2.判断文件类型 is_dir("路径"); //判断给定的路径是不是目录is_file("路径"); //判断给定的路…

linux 提取日志字段,记一次Linux下提取MySQL日志关键字段

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?环境说明操作系统:centos7sed版本:4.2.2egrep版本:2.20paste版本:8.22提取要求一次同事说,需要提取MySQ…

linux 那些事儿之我是 u 盘,《Linux那些事儿之我是USB》.PDF

《Linux 那些事儿之我是 USB》作者:华清远见第 1 章 Linux 那些事儿之我是 USB Core专业始于专注 卓识源于远见1 .引子老夫子们痛心疾首地总结说,现代青年的写照是——自负太高,反对太多,商议太久,行动太迟…

Systemd 入门教程:命令篇

http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html转载于:https://www.cnblogs.com/zengkefu/p/5527003.html

linux链接达梦数据库,linux下面 达梦数据库的JDBC链接

此次由于学习上面的事情,接触到了达梦数据库,这是第一次用,去年有个关于隐通道的课程设计,其实就已经差很少算了解了点点,相对与国外主流数据库,Dm7有个很明显的特色,那就是它的安全级别&#x…

[转]字符串和编码

编码是真的是非常头疼的一个问题。 看到一份说的非常简洁清晰的文章,分享记录一下。 廖雪峰: 字符串和编码转载于:https://www.cnblogs.com/oDoraemon/p/5533221.html

linux 4.9 内核 nptl,【linuxThread和NPTL】

有关Linux线程的问题,有几个需要澄清的:1.核心级线程与用户级线程2.核内还是核外3.linux的标准线程库是哪个?他们之间有什么区别?4.lwp与线程的关系5.LinuxThreads的缺点,NPTL作了哪些改善?6.如何确定你的g…

ccs6 linux安装教程,【图片】【吧主帖】在LINUX(ubuntu)系统下装CCSv6方法(原创)【dsp吧】_百度贴吧...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼首先说下我的系统:系统: Ubuntu14.04.1 (AMD64bit)目标板:三兄弟嵌入式F28335旗舰板仿真器:三兄弟嵌入式XDS100V3仿真器CCS版本:CCS v6 linux版 32bitLinux系统必须库&…

17. 处理日期

import java.text.SimpleDateFormat; import java.util.Date; import java.util.Calendar;public class Test {public static void main(String[] args) {Date date new Date(); //创建日期对象SimpleDateFormat formater new SimpleDateFormat("yyyy-MM-dd");//定…

1x1 11b g n linux,基于RN1810下的2.4 GHz IEEE 802.11b/g/n无线模块

特性• 符合IEEE 802.11b/g/n的收发器• 2.4 GHz IEEE 802.11n单流1x1• 与主机控制器的UART接口(4线,包括RTS/CTS)• 易于集成到最终产品中——最大程度地减少产品开发工作量,缩短上市时间• 使用简单的ASCII命令进行配置• 带稳压电路、晶振、RF匹配电…

!!“理都懂”为什么“然并卵”?

“理都懂”为什么“然并卵”? 脑子有话讲 收藏(176)| 阅读(17980)以前看见过别人问过这么一个问题:「为什么我们懂得很多道理,却依然过不好这一生?」 知乎上有很多这个问题的不同版本,但其实都说的是同一个事情&#…

linux终端模拟器app下载,3C终端模拟器app下载-3C终端模拟器v0.9最新版下载 - 91手游网...

应用介绍3C终端模拟器是一个终端模拟的app,风格多变,轻松好用,还有功能各异的语句等你来试验,可以在其中运行属于你自己的脚本内容,并且这个软件是不限定使用的,这也就意味着你是否有ROOT并不影响这个软件的…

c语言输入坐标判断位置,〓求助〓谁能帮忙编个程序:输入N个点坐标,判断能否构成多边形....

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼编了两天了,没弄出来参考程序(错):#include#define N 4int tt(double p[][2],int a,int b){int temp[N],k0;double t;for(int i0;i{if(ia||ib){continue;}tp[i][0]*(p[b][1]-p[a][1])(p[a][0]-p[b][0])*p[i][1]-p[a][0]…