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.pswp.cn/news/531748.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/531748.shtml
英文地址,請注明出處:http://en.pswp.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或…