【RSA加解密】RSA加密失败,提示 algid parse error, not a seque


背景

  对接支付通道过程中,使用RSA秘钥对参数进行加密时,经常会遇到类似"algid parse error, not a seque"的错误,本篇文章主要记录该问题的解决方案

 

分析

  原因

    与PHP或者其他语言对接过程中,开发人员得到的秘钥可能是PKCS1格式的秘钥,由于Java语言不支持PKCS1格式的秘钥,导致加密失败

  方案

    1.找对应的项目管理人员重新获取PKCS8格式的秘钥

    2.或者使用openssl 工具,将PKCS1格式的秘钥转换为PKCS8格式的秘钥

       命令如下:

openssl pkcs8 -topk8 -inform PEM -in PKCS1-ALF.txt -outform PEM -out PKCS8-ALF.txt -nocrypt

     注意

       1.通常linux系统都装有openssl环境,可以直接使用该命令

       2.PKCS1-ALF.txt 是获取到的PKCS1格式的秘钥,PKCS8-ALF.txt是转换而来的PKCS8格式的秘钥

       3.在转换时,需要添加如下头部和尾部,否则会报错 PEM routines:PEM_read_bio:no start line:pem_lib.c:707:Expecting: ANY PRIVATE KEY

       4.注意在Java代码中,使用秘钥时,则要去掉如下头部和尾部

    -----BEGIN RSA PRIVATE KEY-----
    -----END RSA PRIVATE KEY-----

     


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM