|
/

无法解密获取到的手机号

Gg**d8
发布于 3 年前
1220来自四川省
智能认证 U-Verify
移动统计 U-App
API调用
数据异常

文档地址:https://developer.umeng.com/docs/143070/detail/144783

使用官方例程解密,无论是[RSA](https://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/144783/UMDP_zh/1614771418356/%E8%A7%A3%E5%AF%86%E6%89%8B%E6%9C%BA%E5%8F%B7RSA.zip)还是[ECC](https://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/144783/UMDP_zh/1614771400682/%E8%A7%A3%E5%AF%86%E6%89%8B%E6%9C%BA%E5%8F%B7ECC.zip),都会在`string2PrivateKey`方法中报错,具体内容如下:

Exception in thread "main" java.security.spec.InvalidKeySpecException: encoded key spec not recognized: failed to construct sequence from byte[]: Extra data detected in stream
at org.bouncycastle.jcajce.provider.asymmetric.util.BaseKeyFactorySpi.engineGeneratePrivate(Unknown Source)
at org.bouncycastle.jcajce.provider.asymmetric.ec.KeyFactorySpi.engineGeneratePrivate(Unknown Source)
at java.base/java.security.KeyFactory.generatePrivate(KeyFactory.java:383)
at xxx.xxx.EccUtil.string2PrivateKey(EccUtil.java:24)
at xxx.xxx.Entry.main(Entry.java:19)

代码:

public static ECPrivateKey string2PrivateKey(String priStr) throws Exception {
byte[] keyBytes = base642Byte(priStr);
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance("EC", "BC");
return (ECPrivateKey) keyFactory.generatePrivate(keySpec);
}

私钥是从后台直接点击复制然后粘贴到代码里的,入口代码如下:

public static void main(String[] args) throws Exception {
String mobile = "zr5k+Iy/UROsG/wWEq2hJA==";
String aesEncryptKey = "HgFPP+V4O4NYf9Ro1vOqBzl2xi9bdB44Xm72NRoC/goCr6F3EnC6bJlk2Kl1goH6BGHILEexxiQ7bbzayTKDPA==";
String privateKeyStr = "xxxx"; // 直接复制的代码

byte[] byteArr = EccUtil.privateDecrypt(EccUtil.base642Byte(aesEncryptKey),EccUtil.string2PrivateKey(privateKeyStr));
//再用AES把mobile解密
String mobileOrigin = new String(EccUtil.decryptAES(EccUtil.base642Byte(mobile), Entry.loadKeyAES(byteArr)));
System.out.println(mobileOrigin);
}
1个回答
 
3 年前
来自浙江省

您好,privateKeyStr设置的不对。请您按照文档获取。

Loading ...
登录社区,分享你的经验