第三方公钥文件.pem
公钥:
-----BEGIN RSA PUBLIC KEY-----
MIGJAoGBALfuBySGu7R41NpDSfJIB91RFnX4F5o1QVplszJKUeD9DXkLfdmsR9pM
66MhfnAaV51RJ2LHDgn8PiTtkCyXYRcRZOWqo+faTD73/LLb+UDpqkrhKAmrm0bd
zhbvLhIMWgd+qcnzblnW6BUyXpweoguMGmriOFL+gbczNiPDWPE/AgMBAAE=
-----END RSA PUBLIC KEY-----
pubkeyBuf:第三方公钥转码,Base64.decode(pubkey);
private byte[] getEncSymmKey(byte[] pubkeyBuf, byte[] randomKey) throws Exception {
X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(pubkeyBuf);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
Key publicKey = keyFactory.generatePublic(pubKeySpec);
// 对数据加密
Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
return cipher.doFinal(randomKey);
}
始终出现异常:java.security.InvalidKeyException: IOException: algid parse error, not a sequence
此公钥字节数和有的公钥字节数不同:此公钥为192字节,Base64转码后,byte 140字节
不出现异常公钥
-----BEGIN RSA PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQChDzcjw/rWgFwnxunbKp7/4e8w
/UmXx2jk6qEEn69t6N2R1i/LmcyDT1xr/T2AHGOiXNQ5V8W4iCaaeNawi7aJaRht
Vx1uOH/2U378fscEESEG8XDqll0GCfB1/TjKI2aitVSzXOtRs8kYgGU78f7VmDNg
XIlk3gdhnzh+uoEQywIDAQAB
-----END RSA PUBLIC KEY-----
不出异常的公钥为222字节,Base64转码后,byte 162字节就无异常
不止如何用最上面的第三方公钥进行RSA加密才不出现异常?
公钥:
-----BEGIN RSA PUBLIC KEY-----
MIGJAoGBALfuBySGu7R41NpDSfJIB91RFnX4F5o1QVplszJKUeD9DXkLfdmsR9pM
66MhfnAaV51RJ2LHDgn8PiTtkCyXYRcRZOWqo+faTD73/LLb+UDpqkrhKAmrm0bd
zhbvLhIMWgd+qcnzblnW6BUyXpweoguMGmriOFL+gbczNiPDWPE/AgMBAAE=
-----END RSA PUBLIC KEY-----
pubkeyBuf:第三方公钥转码,Base64.decode(pubkey);
private byte[] getEncSymmKey(byte[] pubkeyBuf, byte[] randomKey) throws Exception {
X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(pubkeyBuf);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
Key publicKey = keyFactory.generatePublic(pubKeySpec);
// 对数据加密
Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
return cipher.doFinal(randomKey);
}
始终出现异常:java.security.InvalidKeyException: IOException: algid parse error, not a sequence
此公钥字节数和有的公钥字节数不同:此公钥为192字节,Base64转码后,byte 140字节
不出现异常公钥
-----BEGIN RSA PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQChDzcjw/rWgFwnxunbKp7/4e8w
/UmXx2jk6qEEn69t6N2R1i/LmcyDT1xr/T2AHGOiXNQ5V8W4iCaaeNawi7aJaRht
Vx1uOH/2U378fscEESEG8XDqll0GCfB1/TjKI2aitVSzXOtRs8kYgGU78f7VmDNg
XIlk3gdhnzh+uoEQywIDAQAB
-----END RSA PUBLIC KEY-----
不出异常的公钥为222字节,Base64转码后,byte 162字节就无异常
不止如何用最上面的第三方公钥进行RSA加密才不出现异常?