问题:openssl 证书格式错误
java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: invalid key format
at sun.security.rsa.RSAKeyFactory.engineGeneratePrivate(Unknown Source)
at java.security.KeyFactory.generatePrivate(Unknown Source)
at com.utils.RsaDigest.signToBytes(RsaDigest.java:126)
at com.utils.RsaDigest.signToBase64StringPrivateKeyStr(RsaDigest.java:97)
at com.utils.YifenqiClient.getSignature(YifenqiClient.java:240)
at com.utils.YifenqiClient.main(YifenqiClient.java:343)
sun.security.pkcs.PKCS8Key.decode(Unknown Source)
如果是使用openssl 生成的私钥:
文本格式:对byte[]数组进行 base64加密的文本内容,上下,各有一行无用内容
开发问题:
1.无用2行内容,没有删除。
2.有多余换行符,这个在调试时,注意没有/r/n
3.过多的问题是不清楚文本已经base64加密了,所以进行加解密操作时,可以用过base64.decode() 解密后的内容,进行私钥生成。
4.重新生成公私钥
privateKeyStr:private_key中的加密内容(只能是一串字符串,不能有换行符)
public static String signToBase64StringPrivateKeyStr(String data, String privateKeyStr) {
byte[] keyBytes = Base64.decodeBase64(privateKeyStr);
byte[] signBytes = signToBytes(data.getBytes(), keyBytes);
return Base64.encodeBase64String(signBytes);
}
4.PKCS8Key.decode(Unknown Source) 需要确定,是否对生成的密钥,进行了pkcs8的格式化操作。