Python常见函数之RSA加密
来自维基百科:RSA加密算法是一种非对称加密算法,在公开密钥加密和电子商业中被广泛使用。RSA是由罗纳德·李维斯特、阿迪·萨莫尔和伦纳德·阿德曼在1977年一起提出的。当时他们三人都在麻省理工学院工作。RSA 就是他们三人姓氏开头字母拼在一起组成的。
代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| import base64 from Crypto.Cipher import PKCS1_v1_5 as Cipher_pkcs1_v1_5 from Crypto.Signature import PKCS1_v1_5 from Crypto.PublicKey import RSA from Crypto.Hash import SHA import json import Crypto import secrets
def rsa_long_encrypt(pub_key_str, msg): msg = msg.encode('utf-8') length = len(msg) default_length = 117 pubobj = Cipher_pkcs1_v1_5.new(RSA.importKey(pub_key_str)) if length < default_length: return base64.b64encode(pubobj.encrypt(msg)) offset = 0 res = [] while length - offset > 0: if length - offset > default_length: res.append(pubobj.encrypt(msg[offset:offset+default_length])) else: res.append(pubobj.encrypt(msg[offset:])) offset += default_length byte_data = b''.join(res) print(base64.b64encode(byte_data)) return base64.b64encode(byte_data)
publickey = 'your publick key' public_key = '-----BEGIN PUBLIC KEY-----\n'+ publickey +'\n-----END PUBLIC KEY-----'
data = { "payAmount": 1000000, "payChId": 1, "bankAssetId": 1001 }
first = secrets.token_bytes(16) result = base64.b64encode(first).decode() print(result)
password='password=WBAPfpP5ph2MrWSOkznJGA==' print(password) infor = json.dumps(data) print(infor) infor=rsa_long_encrypt(public_key,password) print(infor) print(infor.decode('utf-8'))
|