PKCS验签开发工具可以,打包运行后不行

PKCS验签开发工具可以,打包运行后不行这个问题搞了两天终于可以了,主要是jdk的编码是gbk的设置jdk的编码为utf-8就好了

系统环境变量中增加一个变量,变量名为: JAVA_TOOL_OPTIONS, 变量值为:-Dfile.encoding=UTF-8

还有也可以在转字节的时候设置为编码为utf-8

感谢 https://blog.csdn.net/huangshaotian/article/details/7472662

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你想使用Bouncy Castle (BC) 包进行PKCS#7哈希验签,可以按照以下步骤进行操作: 1. 首先,确保你已经正确引入了Bouncy Castle库。你可以在项目中添加BC库的JAR文件或者使用构建工具(如Maven)来添加依赖。 2. 导入所需的类: ```java import org.bouncycastle.cms.*; import org.bouncycastle.util.Store; import org.bouncycastle.util.encoders.Base64; import java.security.MessageDigest; import java.security.cert.X509Certificate; import java.security.Security; ``` 3. 添加BC作为安全提供者: ```java Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); ``` 4. 加载待验签PKCS#7数据: ```java byte[] pkcs7Data = Base64.decode(pkcs7Base64String); // 使用Base64解码PKCS#7数据 CMSSignedData signedData = new CMSSignedData(pkcs7Data); ``` 5. 获取签名证书和签名数据: ```java Store<X509CertificateHolder> certificates = signedData.getCertificates(); SignerInformationStore signers = signedData.getSignerInfos(); Collection<SignerInformation> signerInfos = signers.getSigners(); ``` 6. 遍历每个签名块进行验签: ```java for (SignerInformation signer : signerInfos) { Collection<X509CertificateHolder> matches = certificates.getMatches(signer.getSID()); X509CertificateHolder certHolder = matches.iterator().next(); X509Certificate cert = new JcaX509CertificateConverter().getCertificate(certHolder); // 获取签名数据的哈希算法 String hashAlgorithm = signer.getDigestAlgorithmID().getAlgorithm().getId(); // 计算待验签数据的哈希值 byte[] data = <待验签的数据>; MessageDigest digest = MessageDigest.getInstance(hashAlgorithm); byte[] hashValue = digest.digest(data); // 验证签名 if (signer.verify(hashValue)) { // 验签成功 System.out.println("验签成功"); } else { // 验签失败 System.out.println("验签失败"); } } ``` 在这个代码示例中,我们首先获取签名数据的哈希算法,然后计算待验签数据的哈希值。接下来,使用 `verify` 方法来验证签名,将计算得到的哈希值作为参数传入。 请注意,以上代码仅为示例,具体实现可能会根据你的需求而有所不同。同时,确保你有正确的证书和密钥库,以及对PKCS#7格式和哈希算法的理解。 希望对你有所帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值