android 接支付宝在4.1版本下报java.security.spec.InvalidKeySpecException: java.lang.RuntimeException: error:0D

今天项目要接入支付宝,心想也就5分钟的事,没想到运行起来它就挂,因为之前在上家公司项目也接过,而且接的很顺利,没想到今天接下就报错: 错误日记如下:

java.security.spec.InvalidKeySpecException: java.lang.RuntimeException: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag


发生问题的代码在这行

public class SignUtils {
private static final String ALGORITHM = "RSA";
private static final String SIGN_ALGORITHMS = "SHA1WithRSA";
private static final String DEFAULT_CHARSET = "UTF-8";
public static String sign(String content, String privateKey) {
try {
PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(Base64.decode(privateKey));
// KeyFactory keyf = KeyFactory.getInstance(ALGORITHM);'//如果在4.1版本后这个就会报错,要该你成下面的
KeyFactory keyf = KeyFactory.getInstance("RSA", "BC");
PrivateKey priKey = keyf.generatePrivate(priPKCS8);
java.security.Signature signature = java.security.Signature.getInstance(SIGN_ALGORITHMS);
signature.initSign(priKey);
signature.update(content.getBytes(DEFAULT_CHARSET));
byte[] signed = signature.sign();
return Base64.encode(signed);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}

对支付宝真是无语,好歹是阿里巴巴的,中国的骄傲 , 我支付宝demo还是昨天从官网下载的,为什么使用人这么多,不更新或者做说明呢?好吧  到此结束,希望能帮到那些遇到同样问题的同学们


你可能感兴趣的:(android,支付宝接入)