import base64 import time import json from Crypto.Cipher import PKCS1_v1_5 as PKCS1_cipher from Crypto.PublicKey import RSA PUBLIC_KEY = '-----BEGIN PUBLIC KEY-----\n\ MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDElMhAUOwyo78M97jDGlYvl1FZ\n\ JZV+/EKZ3G7VDO1T5uUNnXWqgxSSwobbd384/npxvfFznoeJ+PaM/fXFNeOGKL9N\n\ GrswS/jTmSdIUdoMQVbGuzrGUK1liK+L9VGxxCmbvJ1f+6iiOHUwZAx6AXA2Mk2s\n\ 8LVtXFCoM5cZWG4GiQIDAQAB\n\ -----END PUBLIC KEY-----' class RSAService: def __int__(self): pass def encrypt_public(self, phone) -> str: """ 使用公钥加密电话号码。 该方法首先构建一个包含电话号码、时间戳和设备信息的数据字典, 然后将该字典转换为JSON字符串,并将其编码为UTF-8字节流。 接着,使用RSA公钥对这些数据进行加密,并将加密后的数据使用Base64进行编码, 最后返回加密后的字符串。 参数: phone -- 需要加密的电话号码。 返回: 加密后的电话号码字符串。 """ # 构建数据字典,包含电话号码、当前时间和设备信息 data = {"phone": phone, "time": int(time.time() * 1000), "device": "python"} # 将数据字典转换为JSON字符串,并编码为UTF-8字节流 msg = json.dumps(data).encode("utf8") # 使用RSA公钥创建加密器 cipher = PKCS1_cipher.new(RSA.importKey(PUBLIC_KEY)) # 使用RSA公钥加密数据,并使用Base64编码加密后的数据 encrypt_text = base64.b64encode(cipher.encrypt(bytes(msg))) # 返回加密后的数据字符串 return encrypt_text.decode('utf-8') if __name__ == '__main__': rsaService = RSAService() msg = rsaService.encrypt_public(phone='13323232323') print(msg)