day31 hmac模組檢測客戶端是否合法

2022-08-24 10:12:06 字數 1329 閱讀 3230

#

如果客戶端知道服務端的ip位址和埠,就可以連線服務端,資訊不安全。

#使用os.urandam隨機生成32位bytes,然後hmac加密之後再傳送給客戶端。

#server:

import

socket

import

hmac

import

ossecret_key = b'

daxiong

'sk =socket.socket()

sk.bind((

'127.0.0.1

',9002))

sk.listen()

conn,addr =sk.accept()

defcompare(conn):

msg = os.urandom(32) #

隨機32位bytes,每次都不一樣。

conn.send(msg) #

把它當做驗證碼發出去

h = hmac.new(secret_key,msg) #

加密secret_key和驗證碼,得到加密的物件

digest = h.digest() #

得到密文

client_digest = conn.recv(1024) #

接收client的密文

return hmac.compare_digest(digest,client_digest) #

對比密文和client的密文,並返回給compare(conn)

ret =compare(conn)

ifret:

print('

合法的客戶端')

else

:

print('

非法客戶端')

conn.close()

sk.close()

#client:

import

socket

import

hmac

sk =socket.socket()

sk.connect((

'127.0.0.1

',9002))

secret_key = b'

daxiong'#

這個金鑰是約定好的。

msg = sk.recv(1024) #

接收32位的bytes

h = hmac.new(secret_key,msg) #

加密,得到h物件。

digest = h.digest() #

密文sk.send(digest)

sk.close()

python 使用hmac模組做金鑰驗證

hmac模組 僅在python3中可以使用 簡介 hmac是金鑰相關的雜湊運算訊息認證碼,hmac運算利用雜湊演算法,以乙個金鑰和乙個訊息為輸入,生成乙個訊息摘要作為輸出。典型應用 hmac的乙個典型應用是用在 質疑 應答 challenge response 身份認證中。認證流程 1 先由客戶端向...

第十章 hashlib模組和hmac模組

目錄hash是一種演算法,接收傳入的內容,經過運算得到的一串hash值 hash的特點 具有唯一性 安全性,可以用於儲存非明文密碼 無論傳入的什麼內容,返回的hash值長度都是固定的 import hashlib m hashlib.md5 建立了hash物件 print type m m.upda...

day31 整數型別

第31節 整數型別 在之前的課程我們提到了,所謂變數就是一種容器可以儲存資料,裡面的資料可以改變。整數型別的寬度如下 char short int long char 8bit 1位元組 0 0xff short 16bit 2位元組 0 0xffff int 32bit 4位元組 0 0xffff...