python包mdure_Python hashlib模块实例使用详解

这篇文章主要介绍了Python hashlib模块实例使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

hashlib模块主要的作用:

加密保护消息安全,常用的加密算法如MD5,SHA1等。

1、查看可用的算法有哪些

hashlib_algorithms.py

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import hashlib

# 始终可用的算法

print("始终可用的算法 : {}".format(sorted(hashlib.algorithms_guaranteed)))

print("需要结合OpenSSL可用算法 : {}".format(sorted(hashlib.algorithms_available)))

运行效果

[root@ mnt]# python3 hashlib_algorithms.py

始终可用的算法 : ["blake2b", "blake2s", "md5", "sha1", "sha224", "sha256", "sha384", "sha3_224", "sha3_256", "sha3_384", "sha3_512", "sha512", "shake_128", "shake_256"]

需要结合OpenSSL可用算法 : ["DSA", "DSA-SHA", "MD4", "MD5", "RIPEMD160", "SHA", "SHA1", "SHA224", "SHA256", "SHA384", "SHA512", "blake2b", "blake2s", "dsaEncryption", "dsaWithSHA", "ecdsa-with-SHA1", "md4", "md5", "ripemd160", "sha", "sha1", "sha224", "sha256", "sha384", "sha3_224", "sha3_256", "sha3_384", "sha3_512", "sha512", "shake_128", "shake_256", "whirlpool"]

2、md5加密算法(没有加盐)

hashlib_md5.py

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import hashlib

md5_obj = hashlib.md5()

md5_obj.update("123456".encode("utf-8"))

print(md5_obj.hexdigest())

运行效果

[root@ mnt]# python3 hashlib_md5.py

e10adc3949ba59abbe56e057f20f883e

3、md5加密算法(加盐)

hashlib_md5_salt.py

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import hashlib

salt = "1234"

md5_obj = hashlib.md5(salt.encode("utf-8"))

md5_obj.update("123456".encode("utf-8"))

print(md5_obj.hexdigest())

运行效果

[root@ mnt]# python3 hashlib_md5_salt.py

b38e2bf274239ff5dd2b45ee9ae099c9

4、sha1加密算法

hashlib_sha1.py

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import hashlib

sha1_obj = hashlib.sha1()

sha1_obj.update("123456".encode("utf-8"))

print(sha1_obj.hexdigest())

hashlib_sha1.py

运行效果

[root@ mnt]# python3 hashlib_sha1.py

7c4a8d09ca3762af61e59520943dc26494f8941b

5、按加密算法名字进行动态加密(即hashlib.new(‘算法名字"))

hashlib_new.py

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import hashlib

import argparse

lorem = "Hello World"

parser = argparse.ArgumentParser("hashlib Demo")

parser.add_argument(

"hash_name",

choices=hashlib.algorithms_available,

help="请输入hashlib的名字"

)

parser.add_argument(

"data",

nargs="?",

default=lorem,

help="请输入要加密的数据"

)

args = parser.parse_args()

h = hashlib.new(args.hash_name)

h.update(args.data.encode("utf-8"))

print(h.hexdigest())

运行效果

[root@ mnt]# python3 hashlib_new.py md5 123456

e10adc3949ba59abbe56e057f20f883e

[root@ mnt]# python3 hashlib_new.py sha1 123456

7c4a8d09ca3762af61e59520943dc26494f8941b

[root@ mnt]# python3 hashlib_new.py sha256 123456

8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92

[root@mnt]# python3 hashlib_new.py sha512 123456

ba3253876aed6bc22d4a6ff53d8406c6ad864195ed144ab5c87621b6c233b548baeae6956df346ec8c17f5ea10f35ee3cbc514797ed7ddd3145464e2a0bab413

6、大文件切片md5加密算法

hashlib_update.py

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import hashlib

content = """Lorem ipsum dolor sit amet, consectetur adipisicing

elit, sed do eiusmod tempor incididunt ut labore et dolore magna

aliqua. Ut enim ad minim veniam, quis nostrud exercitation

ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis

aute irure dolor in reprehenderit in voluptate velit esse cillum

dolore eu fugiat nulla pariatur. Excepteur sint occaecat

cupidatat non proident, sunt in culpa qui officia deserunt

mollit anim id est laborum."""

#一次性加密:缺点文件大的话,加载到内存会导致内存溢出

h = hashlib.md5()

h.update(content.encode("utf-8"))

all_at_once = h.hexdigest()

#利用生成器,切片加密,对大文件加密有用

def chunkize(size, text):

start = 0

while start < len(text):

chuck = text[start:start + size]

yield chuck

start += size

return

#一行一行加密

h = hashlib.md5()

for chunk in chunkize(64,content.encode(("utf-8"))):

h.update(chunk)

line_by_line = h.hexdigest()

print("一性次加密结果 : ",all_at_once)

print("一行一行加密结果 : ",line_by_line)

运行效果

[root@ mnt]# python3 hashlib_update.py

一性次加密结果 : 3f2fd2c9e25d60fb0fa5d593b802b7a8

一行一行加密结果 : 3f2fd2c9e25d60fb0fa5d593b802b7a8

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持云海天教程。

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

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

相关文章

UVAoj 348 - Optimal Array Multiplication Sequence

1 /*2 题意&#xff1a;矩阵相乘的最少的步数3 dp[i][j]min(dp[i][j], dp[i][k]dp[k1][j]num[i-1]*num[k]*num[j]);4 表示的是第i个矩阵到第j个矩阵相乘的最少步数5 sign[i][j]表示的是第i个矩阵到第j个矩阵相乘的最少步数是由第i个矩阵到第sign[i][j]个矩阵相…

raft协议 MySQL 切换_Raft 协议实战系列(二)—— 选主

注&#xff1a;本文原创&#xff0c;转载请标明出处。欢迎转发、关注微信公众号&#xff1a;Q的博客。 不定期发送干货&#xff0c;实践经验、系统总结、源码解读、技术原理。本文目的笔者期望通过系列文章帮助读者深入理解Raft协议并能付诸于工程实践中&#xff0c;同时解读不…

codeforce Pashmak and Buses(dfs枚举)

1 /*2 题意&#xff1a;n个同学&#xff0c;k个车&#xff0c; 取旅游d天&#xff01;3 要求所有的学生没有两个或者两个以上的在同一辆车上共同带d天&#xff01; 输出可行的方案&#xff01;4 5 对于d行n列的矩阵&#xff0c;第i行第j列表示的是第i天第j个同学所…

怎样用mysql查询测试_如何测试数据库查询优化器

我一直认为&#xff0c;查询优化器(Query Optimizer&#xff0c;后面简称优化器)一直是数据库领域 Top 级别的 hardcore 技术&#xff0c;自己也一直尝试去深入理解&#xff0c;但每每看到 TiDB 代码里面那一大坨 plan 的代码&#xff0c;我就望而生畏了&#xff0c;就像是『可…

poj2060Taxi Cab Scheme(二分图匹配)

1 /*2 题意&#xff1a; 出租车 有一个出发的时间&#xff0c;从点&#xff08;a, b&#xff09;到点&#xff08;c, d&#xff09;&#xff0c;时间为3 abs(a-c)abs(b-d)! 一辆车可以在运完一个乘客后运另一个乘客, 4 条件是此车要在预约开始前一分钟之前到达出发地,…

二级java考什么_计算机二级Java考试资料!

Where领&#xff1f;基本要求1 . 掌握 Java 语言的特点&#xff64;实现机制和体系结构&#xff61;2 . 掌握 Java 语言中面向对象的特性&#xff61;3 . 掌握 Java 语言提供的数据类型和结构&#xff61;4 . 掌握 Java 语言编程的基本技术&#xff61;5 . 会编写 Java 用户界面…

二分匹配最大匹配的理解(附图解)

定义一个PXP的有向图中&#xff0c;路径覆盖就是在图中找一些路径&#xff0c;使之覆盖了图中的所有顶点&#xff0c;且任何一个顶点有且只有一条路径与之关联&#xff1b;&#xff08;如果把这些路径中的每条路径从它的起始点走到它的终点&#xff0c;那么恰好可以经过图中的每…

poj 2226 Muddy Fields(合理建图+二分匹配)

1 /*2 题意&#xff1a;用木板盖住泥泞的地方&#xff0c;不能盖住草。木板任意长&#xff01;可以重叠覆盖&#xff01; *表示泥泞的地方&#xff0c;.表示草&#xff01;3 思路&#xff1a;4 首先让我们回忆一下HDU 2119 Matrix这一道题&#xff0c;一个矩阵…

java验证码工具_java 验证码工具

importjavax.imageio.ImageIO;import java.awt.*;importjava.awt.image.BufferedImage;importjava.io.IOException;importjava.io.OutputStream;importjava.util.Random;public classCaptchaUtils {private final static Object lock newObject();/*** 图片的宽度。*/private …

Floyd算法的理解

转载于:https://www.cnblogs.com/hujunzheng/p/3919226.html

http get post java_java发送http的get、post请求实现代码

Http请求类package wzh.Http;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.URL;import java.net.URLConnection;import java.util.List;import java.util.Map;public class HttpRe…

java string的作用_浅谈java String不可变的好处

一、java内部String类的实现&#xff1a;java 8&#xff1a;public final class Stringimplements java.io.Serializable, Comparable, CharSequence {/** The value is used for character storage. */private final char value[];}java 9 及之后&#xff1a;(使用coder标识了…

34988 Happy Reversal(二进制去取反)

1 /*2 题意&#xff1a;给多个二进制数&#xff0c;对某些数进行按位取反操作&#xff01;3 然后从中找到最大数和最小数&#xff0c;并输出他们的差值&#xff01; 4 注意&#xff1a;所有的数都是整数&#xff0c;包括取反之后5 6 思路&#xff1a;一个n为二进…

java vim ide_Vim配置Java IDE

首先安装vim (当然做java 开发要装jdk 这个就不说了)emerge -av vim (gentoo 系统上安装vim 的命令,你可以用rpm ,apt-get )给vim 安装 javacomplete 插件http://www.vim.org/scripts/script.php?script_id1785 这个插件的作用是实现一部分代码提示功能 比如你输入 System…

java中线程存活和线程执行的问题!

1 /*2 下面的程序会出现下面的情况&#xff0c;当Thread-0&#xff0c; Thread-1&#xff0c; Thread-2都被wait的时候&#xff0c;可能会同时苏醒3 Thread-0 put4 Thread-1 put5 Thread-2 put6 Thread-3 get//在此处&#xff0c;Thread-3拿到锁之后&#xff0…

java中多线程模拟(多生产,多消费,Lock实现同步锁,替代synchronized同步代码块)...

import java.util.concurrent.locks.*; class DuckMsg{int size;//烤鸭的大小String id;//烤鸭的厂家和标号DuckMsg(){}DuckMsg(int size, String id){this.sizesize;this.idid;}public String toString(){return id " 大小为:" size;} } class Duck{private int …

java encode 空格_javaWeb中URLEncoder.encode空格问题

近期开发一个在线坐席的功能。发现推送的消息中空格变成了 。查询发现URLEncoder.encode的问题。曾经用的时候也没注意过&#xff0c;解决的方法网上是对URLEncoder.encode的之后的字符串进行替换号&#xff0c;这样的方式假设真的有号那也被替换了。所以应该在URLEncoder.enco…

poj 1386 Play on Words(有向图欧拉回路)

1 /*2 题意&#xff1a;单词拼接&#xff0c;前一个单词的末尾字母和后一个单词的开头字母相同3 思路&#xff1a;将一个单词的开头和末尾单词分别做两个点并建一条有向边&#xff01;然后判断是否存在欧拉回路或者欧拉路 4 5 再次强调有向图欧拉路或欧拉回路的判定方法&…

java web tomcat 实例_Java Web应用开发实例

[1&#xff0e;GIS的概念 1&#xff0e;1什么是gis 地理信息系统 (GIS, Geographic Information System) 是一种基于计算机的工具&#xff0c;它可以对在地球上存在的东西和发生的事件进行成图和分析。 GI上次提到了EclipseTomcatLomboz Java Web开发环境的配置&#xff0c;可环…

poj2513Colored Sticks(无向图的欧拉回路)

1 /*2 题意&#xff1a;将两端涂有颜色的木棒连在一起&#xff0c;并且连接处的颜色相同&#xff01;3 思路&#xff1a;将每一个单词看成一个节点&#xff0c;建立节点之间的无向图&#xff01;判断是否是欧拉回路或者是欧拉路4 5 并查集判通 奇度节点个数等于2或…