```python from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_OAEP import base64 # 私钥字符串 privateKey = """ -----BEGIN RSA PRIVATE KEY----- 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 -----END RSA PRIVATE KEY----- """ # 公钥字符串 publicKey = """ -----BEGIN PUBLIC KEY----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAw0WN6KLMr/mC/GC9Ho4d 2PiH0T34l9OaNZFxdYqCvhZvgD59AQF8VSXCE1yQxhvuSnWm7yngWLd2KGY/Zn1I C9AQAP75vJI0YXrCVAvKCFy+kxBg7w57E772K2mmvcxqMbKRorZFJigidWalnm yCZ/uT6AUmYDBwqsVxexAvkDiI1S3KafUJXP2UokFu5VwWl+O3v0ALU1xQNREE4b 629T09pPB/i+m2CNjb0Ki6K5vB1Xs4PBc4JU2S5pY+4Q05NQqEcbPu0ZDHQPkKy4 +vsJseX77/S+UHYnt13lYVUtz6pad6Xkr7lFBG1PdoX8eIYW1V2WpTRDS4C++SUQ tvBrW5L0ONx+CGOA3tnt+A0tfClFVrOr2YZeA62YpfE5cWVOVyvcY8RER5Vm/ZyP xAx+rLhsf3bLB/xqxQveSuBVGLphObhlenmh5QGTQovUYztRlGgBbGdQdG3m5M1p g3tyTLhL5U0FAa9bbgBSe8lMZNJpfLMsgFCj9d0CEqd0CcH9poP01u1PVp4Dvy7E E7s5XAjvzg0cilUVsLP0nHA9ZGNbMIB91ngv9tRo0oulCNDO231KVSkH9kb5JNDg /N67 -----END PUBLIC KEY----- """ # 加载私钥 private_key = RSA.import_key(privateKey) # 加载公钥 public_key = RSA.import_key(publicKey) def encrypt(plaintext): # 创建公钥加密器 cipher = PKCS1_OAEP.new(public_key) # 加密数据 encrypted = cipher.encrypt(plaintext.encode()) # 将加密后的数据进行Base64编码 encrypted_base64 = base64.b64encode(encrypted) return encrypted_base64 def decrypt(ciphertext): # 对Base64编码的密文进行解码 ciphertext = base64.b64decode(ciphertext) # 创建私钥解密器 cipher = PKCS1_OAEP.new(private_key) # 解密数据 decrypted = cipher.decrypt(ciphertext) return decrypted.decode() # 要加密的明文 plaintext = "Hello, RSA encryption!" # 加密 encrypted_text = encrypt(plaintext) print("Encrypted text:", encrypted_text) # 解密 decrypted_text = decrypt(encrypted_text) print("Decrypted text:", decrypted_text) ``` 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: 1. 确保密钥的格式正确,包含正确的开头和结尾标识,如`-----BEGIN RSA PRIVATE KEY-----`和`-----END RSA PRIVATE KEY-----`,否则密钥加载会失败。 2. 注意加密和解密时使用的填充方式要一致,这里使用的是`PKCS1_OAEP`填充,如果填充方式不一致,解密会失败。 3. 加密数据时,要注意RSA算法对加密数据的长度有限制,通常不能超过密钥长度减去填充字节的长度,否则会抛出异常。 [2025-08-28 20:28:08 | AI写代码神器 | 3252点数解答]