安装包:
pycryptodome
https://pycryptodome.readthedocs.io/en/latest/src/installation.html#compiling-in-linux-ubuntu
1 from Crypto.Hash import SHA256 2 from Crypto.PublicKey import RSA 3 from Crypto import Random 4 from Crypto.Signature import pkcs1_15 5 from Crypto.Cipher import PKCS1_v1_5 6 7 key = RSA.generate(1024) 8 # 公钥 私钥 9 pri_key_text = key.export_key() 10 pub_key_text = key.public_key().export_key() 11 12 pub_key = RSA.import_key(pub_key_text) 13 pri_key = RSA.import_key(pri_key_text) 14 15 # 加密 16 text = b'abcdefg' 17 cipher = PKCS1_v1_5.new(pub_key) 18 etext = cipher.encrypt(text) 19 20 # 解密 21 cipher_de = PKCS1_v1_5.new(pri_key) 22 dtext = cipher_de.decrypt(etext,None) 23 24 # 签名 25 dg = SHA256.new(text) 26 sign = pkcs1_15.new(pri_key).sign(dg) 27 28 # 签名验证 29 dg2 = SHA256.new(dtext) 30 try: 31 pkcs1_15.new(pub_key).verify(dg2, sign) 32 except ValueError: 33 print('验证失败') 34 35 # 对称加密 36 37 from Crypto.Random import get_random_bytes 38 from Crypto.Cipher import AES 39 from Crypto.Util.Padding import pad, unpad 40 41 key = get_random_bytes(16) 42 cipher = AES.new(key, AES.MODE_CBC) 43 edata = cipher.encrypt(pad(text, AES.block_size)) 44 45 cipher_d = AES.new(key, AES.MODE_CBC, cipher.iv) 46 unpad(cipher_d.decrypt(edata),AES.block_size)
标签:加密,Python,text,Crypto,cipher,key,new,import,非对称 From: https://www.cnblogs.com/JiangOil/p/16943301.html