美文网首页
加解密过程遇到的问题及解决方法

加解密过程遇到的问题及解决方法

作者: George_Antonio | 来源:发表于2018-05-14 11:02 被阅读0次

    私钥公钥格式

    常见的加解密

    1. 导入jar包:javabase64-1.3.1.jar

    2. 生成base64编码后的公钥和私钥

    3. 公钥加密私钥解密, 或者私钥加密公钥解密

    这里生成的公钥和私钥是经过base64编码的, PEM格式的, 进行了pkcs8编码的字符串。加密的过程要创建私钥或者公钥的实例。

    调用XXX公司接口加密

    在制作加密锁的过程中, 私钥和公钥文件是客户端调用XXX公司接口产生的。私钥不可以读出, 公钥可以读出。但是可以在本地产生公钥文件和私钥文件。

    可以调用该公司的接口通过私钥加密, 然后调用java接口使用公钥解密。 但是创建公钥实例过程总报错,类似于init format错误。

    原来,调用XXX公司接口产生的公钥和私钥, 是人家XXX公司特有的格式, 需要对私钥和公钥进行格式转换, 转换成PEM格式。

    XXX公司给的开发包中, 含有转换工具, 可以利用转换工具将特定格式的私钥文件和公钥文件转换成PEM格式的文件。

    转换后, 可以知道查看文件知道私钥串和公钥串。 如果拔掉加密锁, 调用javabase64-1.3.1.jar中的接口,在创建公钥实例或者私钥实例的过程仍然报错(algid parse error, not a sequence​), 这是因为此时的PEM格式私钥和公钥是PKCS#1编码, 没有转换成PKCS8编码。 可以下载openssl工具, 使用openssl命令将私钥文件和公钥文件进行pkcs8编码, 也可以使用在线工具进行转换(http://tool.chacuo.net/cryptrsapkcs1pkcs8)。

    私钥文件进行pkcs8编码命令:
    pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt

    公钥文件在进行pkcs8编码的过程总是报错, 我觉得, 公钥文件pkcs8编码需要私钥文件, 因此通过在线工具是不行的。只能通过openssl命令, 注意和私钥进行pkcs8编码命令不同:
    rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

    转换之后, 就可以调用jar包中的接口进行加密解密了。

    而且通过测试,还可以使用XXX公司的私钥加密(使用该公司格式私钥文件,调用该公司接口)。然后使用jar包中的java接口解密(使用PEM格式公钥, 调用Java接口)。我觉得, 该公司加密接口,应该也是先将私钥格式转换成PEM格式, 然后加密。

    -----------------------------------------2018-06-07--------------------------------------------------------
    生成PKCS#1编码私钥
    genrsa -out rsa_private_key.pem 1024

    相关文章

      网友评论

          本文标题:加解密过程遇到的问题及解决方法

          本文链接:https://www.haomeiwen.com/subject/ixdddftx.html