非対称暗号化と復号化

 I.暗号化されたコード

公開鍵復号化するための秘密の暗号化#
インポート
RSA インポートBase64で #公開鍵と秘密鍵の生成 pub_key_objを、priv_key_obj = rsa.newkeys(1024 pub_key_str = pub_key_obj.save_pkcs1() pub_key_code = base64.standard_b64encode(pub_key_str) priv_key_str = priv_key_obj.save_pkcs1() priv_key_code = base64.standard_b64encode(priv_key_str) 印刷(pub_key_code) 印刷(priv_key_code) 暗号化 DEF 暗号化(値): key_str = base64.standard_b64decode(pub_key_code) PK =rsa.PublicKey.load_pkcs1(key_str) ヴァル = rsa.encrypt(values.encode(' UTF-8 ' )、PK) リターンヴァルの RET =暗号化(' HHHHHH ' プリント(RET)が DEF (値)復号: key_str = BASE64 .standard_b64decode(priv_key_code) PK = rsa.PrivateKey.load_pkcs1(key_str) ヴァル = rsa.decrypt(値は、PK) リターンヴァル RET1 = 解読(RET) プリント(RET1)

 

II。実用的なコード

インポートRSA
 インポートBASE64 

#生成公钥私钥 
pub_key_obj、priv_key_obj = rsa.newkeys(1024 

pub_key_str = pub_key_obj.save_pkcs1()
pub_key_code = base64.standard_b64encode(pub_key_str)

priv_key_str = priv_key_obj.save_pkcs1()
priv_key_code = base64.standard_b64encode(priv_key_str )


プリント(pub_key_code)
 プリント(priv_key_code) 

加密
DEF 暗号化(値):
    長さ = LEN(値)
    I、より = divmod(長さ、117 場合もっと:
        I + = 1 
    DATA_LIST = []
     のための J の範囲(0、I):
        データ =値[117 * jの(J + 1)* 117 ] 


        key_str = base64.standard_b64decode(pub_key_code)
        PK = rsa.PublicKey。 load_pkcs1(key_str)
        ヴァル = rsa.encrypt(data.encode(' UTF-8 ' )、PK)
        data_list.append(ヴァル)
    リターン B '' .join(DATA_LIST)

RET =暗号化(' HHHH ' ×1000 印刷(RET)

DEF :(値)復号 = LEN(値)
    I、より = divmod(長さ、128 場合より:
        私は + = 1 
    DATA_LIST = []
     のための J の範囲(0、I):
        データ =値[ 128 * jの(J + 1)* 128 ] 
        key_str = base64.standard_b64decode(priv_key_code)
        PK = rsa.PrivateKey.load_pkcs1(key_str)
        ヴァル   = rsa.decrypt(データ、PK)
        data_list.append(val.decode(' UTF -8 "))
     戻り '' .join(DATA_LIST)

RET1 = 解読(RET)
 プリント(RET1)

 

おすすめ

転載: www.cnblogs.com/guniang/p/11506102.html