问题:DerInputStream.getLength(): lengthTag=111, too big.
原因:使用的公钥不是真正的公钥,而是我自己随便写的简单的字符串
解决:使用真正的公钥解密
byte[] keyBytes = EncryptUtil.rsaEncryptByPublicKey(desKey.getBytes(EncryptUtil.DEFAULT_CHARSET), assetPublicKey);
/**
* RSA公钥加密
*
* @param data
* @param key
* @return
* @throws Exception
*/
public static byte[] rsaEncryptByPublicKey(byte[] data, String key) throws Exception {
// 对公钥解密
byte[] keyBytes = decryptBASE64(key);
// 取得公钥
X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance(RSA_ALGORITHM);
Key publicKey = keyFactory.generatePublic(x509KeySpec);
// 对数据加密
Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
return cipher.doFinal(data);
}