#如果客戶端知道服務端的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...