! python rsa生成是 .pem文件,java中的rsa是一串字符串
python 生成的是pkcs#1 格式的,java好像是pkcs#8的。
python的密鑰和公鑰是 ' -----BEGIN RSA PUBLIC KEY----- '開頭, '-----END RSA PUBLIC KEY-----'結尾 。
我們公司的 java 公鑰和密鑰是 按照 X.509 標准進行編碼的密鑰的字節, 經過 X509EncodedKeySpec 如圖
python 和 java 互通 RSA加密解密代碼如下:
def encrypt(content): ''' # 用公鑰加密 :param content: 加密的字符串 :return: ''' # TODO PRIVE_KEY java端給的公鑰 key = RSA.importKey(base64.b64decode(PRIVE_KEY)) cipher = PKCS1_v1_5.new(key) return base64.b64encode(cipher.encrypt(str(content).encode(encoding='utf-8'))).decode('utf-8') def decrypt(crypt): ''' # 用公鑰加密 :param crypt: 加密的字符串 :return: ''' # TODO PRIVE_KEY java端給的私鑰 rsakey = RSA.importKey(base64.b64decode(PRIVE_KEY)) cipher = PKCS1_v1_5.new(rsakey) return cipher.decrypt(base64.b64decode(crypt), random_generator).decode('utf-8')
在python中私鑰和公鑰千萬別傳錯,否則會報 ’不支持格式的錯誤‘