日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第二十五篇 hashlib模块(* *)

發布時間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第二十五篇 hashlib模块(* *) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

加密復雜程度:?SHA1? ?<? ?SHA224? ? <? ?SHA256? ? <? SHA384? ?<? ?SHA512 <? MD5?

加密越復雜,意味著消息的時間就越多。

哈希算法:把一個不定長的內容,加密變成一個定長的內容,而且與被加密內容是唯一對應的。

很常見的,我們在網銀,淘寶,京東能都有賬戶密碼,用戶輸入的時候都是明文,密碼在傳輸的過程中,必須是密文,而不能是明文,同時數據庫存的時候,必須存為可與明文唯一對應的加密后的值。

三個知識點:

1.?一個字符串可以轉換成一段密文,并且不能被反解;

2.?既然不能反解,那只能正解,比如在登錄的時候就讓他們都變成密文,然后用兩個密文進行比較

3.?原生寫的MD5,全世界人都知道,所以可以進行加言,該加言只有開發者自己知道。對于需要加密的都是基于這個加言后的MD5進行的,別人也就無法反解了。

import hashlibobj = hashlib.md5()obj.update("hello".encode("utf-8")) print(obj.hexdigest()) # 5d41402abc4b2a76b9719d911017c592

以上加密算法雖然依然非常厲害,但時候存在缺陷,即:通過撞庫可以反解。所以,有必要對加密算法中添加自定義key再來做加密。

import hashlibobj = hashlib.md5("jiayan".encode("utf"))obj.update("hello".encode("utf-8")) print(obj.hexdigest()) # 686a12bb5577133d6698131cbf0b4b4a

需要注意的:

先對"A"進行加密,接著在對"B"進行加密,"B"的加密是基于"A"的加密的。相當于"B"的加密對象是"AB"

import hashlibobj = hashlib.md5("jiayan".encode("utf"))obj.update("hello".encode("utf-8")) print(obj.hexdigest()) # 686a12bb5577133d6698131cbf0b4b4a obj.update('world'.encode('utf8')) print(obj.hexdigest()) # c805eca8aad002e5d44a39d3aec78f8e#上面對于"world"的加密,是基于Hello加密后,對"world"再進行加密的。 驗證: import hashlibobj = hashlib.md5("jiayan".encode("utf"))obj.update('world'.encode('utf8')) print(obj.hexdigest()) # b278e99dfd536f7844785bbd39288e1a (沒有"hello"時) # c805eca8aad002e5d44a39d3aec78f8e (有"hello"時) 與沒有注釋"hello"的結果不一致,證明是基于hello加密后再進行加密的。還可以通過下面的方法驗證 import hashlibobj = hashlib.md5("jiayan".encode("utf"))obj.update('helloworld'.encode('utf8')) print(obj.hexdigest()) # c805eca8aad002e5d44a39d3aec78f8e ("helloworld"連在一起時) # c805eca8aad002e5d44a39d3aec78f8e (有"hello"時)

hashlib下還有SHA256等:

SHA256等其他加密算法的用法與MD5完全一樣,只需要把MD5換成256等即可。

import hashlibobj = hashlib.sha256("jiayan".encode("utf-8")) obj.update("hello".encode("utf-8")) print(obj.hexdigest()) # 24ac0688c0d320346adc8cafd1ba543cf4332ed1e5fdd610edd5f7365b4a862f

?

轉載于:https://www.cnblogs.com/victorm/p/9281498.html

總結

以上是生活随笔為你收集整理的第二十五篇 hashlib模块(* *)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。