Python30期第二十九天課程總結

2021-10-06 23:01:17 字數 1718 閱讀 8829

1.基本用法

(1)建立乙個md5演算法的物件

(2)把要加密的字串通過update更新到hs物件中運算

(3)獲取32位16進製制的字串

2.加鹽 (加key => xboy_ 加乙個關鍵字配合原字串,讓密碼更加複雜,不容易破解)

3.動態加鹽

4.sha演算法

sha 算出來的十六進製制的串是40位 加密稍慢 , 安全性稍高

md5 算出來的十六進製制的串是32位 加密速度快,安全性一般

5.hmac

(1)hmac 加密演算法更加複雜,不容易破解

(2)必須指定鹽

1.在不知道加密演算法的時候,只知道金鑰也沒用

2.服務端1(公司)

import socket

import hmac

import hashlib

def auth(sk,secret_key):

# 處理許可權驗證的邏輯

msg = sk.recv(32)

hm = hmac.new(secret_key.encode(),msg)

res = hm.hexdigest()

print(res)

sk.send(res.encode("utf-8"))

secret_key = "芝麻開門"

sk = socket.socket()

sk.connect( ("127.0.0.1" , 9000) )

# 驗證服務端

auth(sk,secret_key)

# 傳送資料

sk.send("請求呼叫支付寶刷臉支付介面".encode("utf-8"))

sk.close()

3.服務端2(支付寶)

import socket

import hmac

import os

def auth(conn,secret_key):

# 隨機產生32位二進位制位元組流

msg = os.urandom(32)

conn.send(msg)

hm = hmac.new(secret_key.encode(),msg)

res_serve = hm.hexdigest()

print(res_serve)

res_client = conn.recv(1024).decode("utf-8")

if res_client == res_serve:

print("是合法的連線使用者")

return true

else:

print("是不合法的連線使用者")

return false

sk = socket.socket()

sk.bind( ("127.0.0.1" , 9000) )

sk.listen()

# 三次握手

conn,addr = sk.accept()

# 設定金鑰

secret_key = "芝麻開門"

res = auth(conn,secret_key)

# 許可權的校驗

if res:

print(conn.recv(1024).decode("utf-8"))

# 四次揮手

conn.close()

# 退換埠

sk.close()

第二十九天

字元陣列和字元指標不是一回事 1字元陣列由若干個元素組成,每個元素中放乙個字元,而字元指標變數中存放的是位址 字串第乙個字元的位址 決不是將字串放到字元指標變數中。2賦值方法不同,對字元陣列只能對各個元素賦值,不能用以下辦法對字元陣列賦值。char str 20 str miao 字元指標變數,可以...

2018 06 04 第二十九天

class testhashset static void main string args println person println person println set int age int hashcode println person.hashcode int prime 31 boo...

第二十九天筆記

單例模式 多次例項化的結果指向同乙個例項 1.目標 編寫乙個c s架構的軟體 c s client 基於網路 server b s browser 基於網路 server 2.服務端需要遵循的原則 1.服務端與客戶端都需要有唯一的位址,但是服務端的位址必須固定 繫結 2.對外一直提供服務,穩定執行 ...