python_ネットワークプログラミングモジュールのHMACは、クライアントの正当性を検証します

HMACモジュール:

  二つの重要な機能が同じである比較:

インポートHMAC
 インポートOS 

MSG = os.urandom(32)     は、32ビットのランダムなバイトコード生成

DEF :WDC()
    キー = B ' WDC '     #のキー 
    RET = hmac.new(キー、MSG)      #1 バイトコードとキーは、オブジェクトRETを作成するために、暗号化されている(バイトは両方のタイプがなければなりません) 
    ダイジェスト= ret.digest()   消化
    リターンダイジェスト    #の暗号文返さ消費

DEF YHFを():
    キー1 = B ' WDC '    キー 
    RET1 = HMAC。新新(KEY1、MSG)   バイトコードとキー1、暗号化(タイプは、両方のバイトがしなければならない)、オブジェクトRET1を作成します。
    = ret1.digest digest1()     消化
    戻り digest1の   暗号文の消費後に返さ

WDC = WDC()
YHF = YHF()
の結果 = hmac.compare_digest(WDC、YHF)    比較2暗号文である一貫したリターンファレス/真
印刷(結果)#出力

クライアントの正当性を確認します。

  サーバー:

インポートOS
 インポートHMAC
 インポートソケット
SECRET_KEY = B ' WDC '       #のキー:バイナリコード化されなければならない 
SK = socket.socket()
sk.bind((' 127.0.0.1 '、8080 ))
sk.listen()

DEF check_conn(コネティカット):
    MSG = os.urandom(32)    は、ランダム32ビットコードを生成する入力バイト 
    conn.sendを(MSG)  32バイトのランダムコード送信 
    H = hmac.new(SECRET_KEY、MSG)     キーと生成されたランダムバイト生成された暗号化コードは、ターゲットと一致する 
    ダイジェスト= h.digest()     生成された暗号文を消化しました
    = conn.recv client_digest(1024)     メッセージを受信(クライアントが暗号文を生成した)
    戻り hmac.compare_digest(ダイジェスト、client_digest)    サービスを比較すると、クライアントは、暗号文が一致している受信

コネティカット、ADDR = sk.accept()
RES = check_conn(コネチカット州)
 IF RES:
     印刷' 正当なクライアント' 
    はconn.close()
印刷' なし正当なクライアント' 
    はconn.close()

sk.close()

  クライアント:

インポートHMAC
 インポートソケット
SECRET_KEY = B ' WDC '      #のキー:バイナリコード化されなければならない 
SK = socket.socket()
sk.connect((' 127.0.0.1 '、8080 ))
MSG = sk.recv(1024)     受信情報(生成された32ビット・コード・バイトを受信するために) 
H = hmac.new(SECRET_KEY、MSG)    キーとランダムバイト生成された暗号化コードを生成する対象と一致する 
ダイジェストh.digest =()     は、農産物の暗号文消化 
SKを。送信(ダイジェスト)       #は、生成した暗号文の送信

)(sk.closeを

 

おすすめ

転載: www.cnblogs.com/wangdianchao/p/11701064.html