下面是使用rsa私钥的Java代码(例如:MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvBXTe278Lwg2MoI7iGKolSYuF+sNFKrsZplxCN9x0kItU3KIf8+1q60ILLwLewCEf7foxzpWp32j9YYU9vNBghuJ7BHcDYTffTRcv+QdNno491j701Hq7DIw13AGCQQTRcnfclvblnytIEWoQsiUvPJcdiWgqJIX3IQGA47a+uwIDAQAB
)>>
并使用rsa公钥(从上面的rsa私钥生成的公钥)对纯字符串test123
进行加密]
byte[] array = javax.xml.bind.DatatypeConverter.parseBase64Binary(key); KeyFactorykf = KeyFactory.getInstance(“RSA”); publicKey = kf.generatePublic(new X509EncodedKeySpec(array)); Cipher = Cipher.getInstance(“RSA”); cipher.init(Cipher.ENCRYPT_MODE, publicKey); byte[] result = cipher.doFinal (“test123”.getBytes(“UTF-8”)); String output = javax.xml.bind.DatatypeConverter.printBase64Binary(result);
我尝试在python中使用m2crypto库来这样做:
import base64 from M2Crypto import BIO, RSA pubkey = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvBXTe278Lwg2MoI7iGKolSYuF+sNFKrsZplxCN9x0kItU3KIf8+1q60ILLwLewCEf7foxzpWp32j9YYU9vNBghuJ7BHcDYTffTRcv+QdNno491j701Hq7DIw13AGCQQTRcnfclvblnytIEWoQsiUvPJcdiWgqJIX3IQGA47a+uwIDAQAB' # encryption text = "test123".encode('utf-8') # Plaintext pub_bio = BIO.MemoryBuffer(pubkey.encode('utf-8')) # Public key string pub_rsa = RSA.load_pub_key_bio(pub_bio) # Load public key secret = pub_rsa.public_encrypt(text, RSA.pkcs1_padding) # Public key encryption sign = base64.b64encode(secret) # Ciphertext base64 encoding print(sign)
我得到的错误是:
Traceback (most recent call last): File "encrypt_rsa_public_key.py", line 13, in <module> pub_rsa = RSA.load_pub_key_bio(pub_bio) # Load public key File "/Users/umeshpathak/env/py3env/lib/python3.7/site-packages/M2Crypto/RSA.py", line 444, in load_pub_key_bio rsa_error() File "/Users/umeshpathak/env/py3env/lib/python3.7/site-packages/M2Crypto/RSA.py", line 333, in rsa_error raise RSAError(Err.get_error_message()) M2Crypto.RSA.RSAError: no start line
我该如何解决?
以下是使用rsa私钥的Java代码(例如:MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvBXTe278Lwg2MoI7iGKolSYuF + sNFKrsZplxCN9x0kItU3KIf8 + 1q60ILLwLewCEf7foxz> [h [W [
-----BEGIN PUBLIC KEY-----
和-----END PUBLIC KEY-----
之间。因此,您必须将pubkey
更改为:pubkey = '-----BEGIN PUBLIC KEY-----\n' \
'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvBXTe278Lwg2MoI7iGKolSYuF+sNFKrsZplxCN9x0kItU3KIf8+1q60ILLwLewCEf7foxzpWp32j9YYU9vNBghuJ7BHcDYTffTRcv+QdNno491j701Hq7DIw13AGCQQTRcnfclvblnytIEWoQsiUvPJcdiWgqJIX3IQGA47a+uwIDAQAB' \
'\n-----END PUBLIC KEY-----'