java.security.spec.InvalidKeySpecException: java.lang.RuntimeException: error:0c0000b9:ASN.1 encodin

本文详细解析了在Android4.1环境下使用支付宝进行支付时遇到的java.security.spec.InvalidKeySpecException异常,介绍了如何通过正确的密钥生成和签名过程来解决此问题。

支付宝踩坑:java.security.spec.InvalidKeySpecException: java.lang.RuntimeException: error:0c0000b9:ASN.1 encoding routines:OPENSSL_internal:WRONG_TAG

这个问题是:Android4.1的问题,4.1之后就是加KeyFactory keyf = KeyFactory.getInstance(ALGORITHM, "BC");

PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(Base64.decode(privateKey));
KeyFactory keyf = KeyFactory.getInstance(ALGORITHM, "BC");//
PrivateKey priKey = keyf.generatePrivate(priPKCS8);

java.security.Signature signature = java.security.Signature.getInstance(getAlgorithms(rsa2));

signature.initSign(priKey);
signature.update(content.getBytes(DEFAULT_CHARSET));

byte[] signed = signature.sign();
//LogUtils.logd("AliPaySignTool.sign:加密返回");
return Base64.encode(signed);
### 三级标题:标签不支持错误的常见原因与解决方案 在软件开发或系统集成过程中,用户可能会遇到 `tag not supported` 类型的错误提示。此类问题通常出现在构建工具、数据库操作、版本控制系统(如 Git)或容器平台(如 Docker)中。以下是常见的几种场景及其对应的解决方法。 #### 1. Git 标签版本冲突或格式错误 如果使用了 Git 进行版本控制,并尝试检出某个特定标签时出现 `tag not supported` 错误,可能是由于本地仓库未正确同步远程标签信息或标签名称格式不符合规范。可以通过以下方式修复: - 更新本地标签信息: ```bash git fetch --tags ``` - 删除本地无效标签并重新获取: ```bash git tag -d <tag_name> git fetch origin tag <tag_name> ``` #### 2. Docker 构建时镜像标签不可用 当构建依赖于特定镜像标签的 Dockerfile 时,若指定的标签不存在或拼写错误,会触发类似 `Pulling docker image registry.tld/my/image:latest ... ERROR: Build failed: Error: image registry.tld/my/image:latest not found` 的错误[^1]。应确保镜像地址和标签拼写准确,并可通过以下命令验证是否存在该镜像标签: ```bash docker pull registry.tld/my/image:latest ``` #### 3. Java 构建工具中的标签兼容性问题 在使用 Maven 或 Gradle 等构建工具进行项目编译时,若引入了不兼容的插件版本或 JDK 支持级别较低,可能导致某些语言特性或注解标签无法识别,从而引发 `tag not supported` 错误。例如,在使用旧版 ANT 插件时可能无法处理较新的 Java 版本特性[^3]。建议更新插件至兼容版本,或调整 `pom.xml` / `build.gradle` 中的插件配置以匹配当前环境。 #### 4. IDE 编辑器符号解析失败 某些集成开发环境(如 JetBrains ReSharper)在索引或分析代码时,若项目依赖项未被正确编译,可能导致无法识别特定标签或符号,进而报错 `&#39;Cannot resolve symbol&#39;`。此时应手动构建相关依赖项目,并确保构建产物可被 IDE 正确加载[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值