1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- 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)
|