欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python加密模塊的hashlib,hmac模塊使用解析

 更新時(shí)間:2020年01月02日 09:21:27   作者:就是想學(xué)習(xí)  
這篇文章主要介紹了Python加密模塊的hashlib,hmac模塊使用解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了Python加密模塊的hashlib,hmac模塊使用解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

在寫(xiě)搬磚腳本中,碰到一個(gè)加密的信號(hào)標(biāo)簽文件無(wú)法運(yùn)行。

import hashlib
import time
 
m = hashlib.md5()
 
api_key = ''
api_secret = ''
 
params = {'api_key':api_key, 'time':int(time.time()), 'symbol':'btclcny'}
 
def sign( data , secret ):
  signStr = ""
  keys = data.keys()
  keys = sorted(keys)
  for key in keys:
    signStr = signStr + key
    signStr = signStr + bytes(data[key])
    pass
  signStr += secret
  m.update(signStr)
  return m.hexdigest()
 
print sign( params , api_secret )

實(shí)在搞不懂寫(xiě)的人的意思,里面有字符串與字節(jié)碼的相加?反正就是跑不起來(lái),隨便我這個(gè)加密模塊也用的少,這次就給自己記錄學(xué)習(xí)的機(jī)會(huì)來(lái)了。

媽的,這個(gè)平臺(tái)太垃圾了,接口有問(wèn)題的,浪費(fèi)我好長(zhǎng)時(shí)間,后面還去看了它的PHP代碼,看的腦子發(fā)麻,后來(lái)仔細(xì)研究了傳入 params,里面的接口文檔寫(xiě)的亂七八糟,浪費(fèi)時(shí)間。一萬(wàn)頭草泥馬飛過(guò)。

切入主題,先講hashlib,后面介紹hmac,有時(shí)間下一個(gè)章節(jié),把base64還有io,以及pickle,json,shelve,fileinput.

概念:

Python的hashlib提供了常見(jiàn)的摘要算法,如MD5,SHA1等等。

什么是摘要算法呢?摘要算法又稱哈希算法、散列算法。它通過(guò)一個(gè)函數(shù),把任意長(zhǎng)度的數(shù)據(jù)轉(zhuǎn)換為一個(gè)長(zhǎng)度固定的數(shù)據(jù)串(通常用16進(jìn)制的字符串表示)。所以看來(lái)的hash加密值沒(méi)有超過(guò)字母f的

后面可以測(cè)試每種加密手法的輸出字段長(zhǎng)度,也可以知道具體輸出的Byte字節(jié)數(shù)(一個(gè)16進(jìn)制的數(shù)對(duì)應(yīng)4位)。

'''初始化對(duì)象'''
h1 = hashlib.md5()
h2 = hashlib.new('md5')
h3 = hashlib.md5()
h1.update(b'123')  # 進(jìn)行摘要
h2.update('123'.encode())
h3.update(b'1')
h3.update(b'23')
print(h1.hexdigest())  # 取值
print(h2.hexdigest())
print(h3.hexdigest())
202cb962ac59075b964b07152d234b70<br data-filtered="filtered">202cb962ac59075b964b07152d234b70<br data-filtered="filtered">202cb962ac59075b964b07152d234b70

一共有兩種實(shí)例化的方法,一般介紹都是第一種。記住,進(jìn)行進(jìn)行md5摘要時(shí),對(duì)象一定是二進(jìn)制數(shù)據(jù)。

update其實(shí)可以分開(kāi)用,只要里面的數(shù)據(jù)沒(méi)有變,分開(kāi)用書(shū)上介紹對(duì)大文件操作會(huì)更加快。

由于這樣直接加密,沒(méi)有添加輔助字符,假如是用戶的密碼設(shè)置的很簡(jiǎn)單,很容易通過(guò)加密后的數(shù)據(jù)也能反向分析出密碼,所以要添加一些干擾詞匯。

hmac也是干擾加密的另外一種相對(duì)看過(guò)去比較高級(jí)的寫(xiě)法。

add_word = b'haha'     # 把這個(gè)當(dāng)做加密鹽,
 
hh1 = hashlib.md5()
hh1.update(add_word + b'jiujiu')
print(hh1.hexdigest())
 
hh2 = hashlib.md5()
hh2.update( b'jiujiu' + add_word)
print(hh2.hexdigest())
 
m = hmac.new(add_word) # 這個(gè)跟hashlib的寫(xiě)法有點(diǎn)類似,默認(rèn)是md5加密
m.update(b'jiujiu')
print(m.hexdigest())
h_md5 = hmac.new(add_word, b'jiujiu').hexdigest() # 這是另外一種方式,直接加密后取值。
h_sha1 = hmac.new(add_word, b'jiujiu', 'sha1').hexdigest()
h_sha224 = hmac.new(add_word, b'jiujiu', 'sha224').hexdigest()
h_sha256 = hmac.new(add_word, b'jiujiu', 'sha256').hexdigest()
h_sha512 = hmac.new(add_word, b'jiujiu', 'sha512').hexdigest()
 
print(h_md5, len(h_md5), sep='======>num')
print(h_sha1, len(h_sha1), sep='======>num')  # 通過(guò)輸出可以看出,md5輸出32個(gè)16進(jìn)制數(shù)字,一共128位
print(h_sha224, len(h_sha224), sep='======>num')  # sha1輸出40個(gè)數(shù)字,所以為160位,剩下的sha后面的數(shù)字就代表輸出幾位。
print(h_sha256, len(h_sha256), sep='======>num')
print(h_sha512, len(h_sha512), sep='======>num')
3e289c523f955430bce2e47a14d4934b
eb01e09a1fe2bfd95d8f31c8ae544faf
ef84bc9ee2bf91d1789227d82193d7a9
ef84bc9ee2bf91d1789227d82193d7a9======>num32
fbd95ddafdac6352cdf3d9d4e8c6d2421c80e56c======>num40
60d1896d00e73bc67469a58b39ded91c60c162eda0f44306f7d08d58======>num56
b36f8977bba6265612bc338b89c698d17cff7ccfb81b7d7a434f0ad889995e26======>num64
043f51bd410f9d328ca0ab0913ddfde9c2519f639c74447a1516811b8920b125aa6f4d3977c83e038e82c39103ac2a3bbdd5235c9c95fc030a267cdf0d578696======>num128

從整個(gè)代碼的操作來(lái)看還是比較簡(jiǎn)單,至少比我想象的簡(jiǎn)單,加密的邏輯我也不懂,我也知道密碼學(xué)很高級(jí),就我這小學(xué)三年級(jí)的數(shù)學(xué)有空再看吧。

hmac只不過(guò)是一種機(jī)器加密的手段,但我試過(guò)了,無(wú)論我把這個(gè)加密鹽放加密字節(jié)碼的前面或者后面,跟hmac出來(lái)的效果不一樣,看來(lái)它有自己的拼接加密算法。

至于sha1,sha256,sha512就比較容易記住了,md5是32個(gè)16進(jìn)制數(shù)輸出,所以包含bit是128位,sha1是是輸出40個(gè)16進(jìn)制數(shù),所以是160個(gè)bit,剩下的比較好理解,后面的數(shù)字代表了幾個(gè)bit位。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 用實(shí)例解釋Python中的繼承和多態(tài)的概念

    用實(shí)例解釋Python中的繼承和多態(tài)的概念

    這篇文章主要介紹了用實(shí)例解釋Python中的繼承和多態(tài)的概念,繼承和多臺(tái)是學(xué)習(xí)每一門(mén)面對(duì)對(duì)象的編程語(yǔ)言時(shí)都必須掌握的重要知識(shí),需要的朋友可以參考下
    2015-04-04
  • python KNN算法實(shí)現(xiàn)鳶尾花數(shù)據(jù)集分類

    python KNN算法實(shí)現(xiàn)鳶尾花數(shù)據(jù)集分類

    這篇文章主要介紹了python KNN算法實(shí)現(xiàn)鳶尾花數(shù)據(jù)集分類,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • 簡(jiǎn)單聊聊Python中的鴨子類型和猴子補(bǔ)丁

    簡(jiǎn)單聊聊Python中的鴨子類型和猴子補(bǔ)丁

    不知不覺(jué)使用python寫(xiě)代碼已經(jīng)很長(zhǎng)時(shí)間了,下面這篇文章主要給大家介紹了關(guān)于python鴨子類型(duck?type)和猴子補(bǔ)丁(mokey?patching)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • Python實(shí)現(xiàn)自動(dòng)駕駛訓(xùn)練模型

    Python實(shí)現(xiàn)自動(dòng)駕駛訓(xùn)練模型

    這篇文章主要為大家介紹了Python實(shí)現(xiàn)自動(dòng)駕駛訓(xùn)練模型,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 使用Python對(duì)接OpenAi?API實(shí)現(xiàn)智能QQ機(jī)器人的方法

    使用Python對(duì)接OpenAi?API實(shí)現(xiàn)智能QQ機(jī)器人的方法

    這篇文章主要介紹了使用Python對(duì)接OpenAi?API實(shí)現(xiàn)智能QQ機(jī)器人的方法,主要是提供一個(gè)方法思路,可以根據(jù)實(shí)現(xiàn)代碼延申出更多的解決方法,需要的朋友可以參考下
    2023-03-03
  • python快速入門(mén)題目詳解

    python快速入門(mén)題目詳解

    下面小編就為大家?guī)?lái)一篇快速入門(mén)python的題目詳解小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2021-11-11
  • python Polars庫(kù)的使用簡(jiǎn)介

    python Polars庫(kù)的使用簡(jiǎn)介

    這篇文章主要介紹了python Polars庫(kù)的使用簡(jiǎn)介,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-04-04
  • linux安裝python修改默認(rèn)python版本方法

    linux安裝python修改默認(rèn)python版本方法

    在本文中我們給大家總結(jié)了關(guān)于linux安裝python修改默認(rèn)python版本的方法和相關(guān)知識(shí)點(diǎn),需要的讀者們參考下。
    2019-03-03
  • Python中print()函數(shù)的用法詳情

    Python中print()函數(shù)的用法詳情

    這篇文章主要介紹了Python中print()函數(shù)的用法詳情,Python中print()函數(shù)的方法是打印指定的內(nèi)容。在交互環(huán)境中輸入“help(print)”指令,可以顯示print()函數(shù)的使用方法,下面來(lái)看看具體的詳細(xì)內(nèi)容吧
    2022-02-02
  • python timestamp和datetime之間轉(zhuǎn)換詳解

    python timestamp和datetime之間轉(zhuǎn)換詳解

    這篇文章主要為大家詳細(xì)介紹了python timestamp和datetime之間轉(zhuǎn)換,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12

最新評(píng)論