首页 > 电脑

OpenSSL生成的公钥文件是base64编码好的吗

更新时间2019-03-18 05:14:18

A系统使用java生成了一个公钥(base64编码)然后发给我,我存入test_pub.key文件中作为公钥,我调用OpenSSL中的RSA_public_encrypt进行RSA加密。其中padding=RSA_PKCS1_PADDING;加密后又对加密结果进行base64编码加密。然后传给A系统,A系统返回说RSA解密失败。我把A系统提供的公钥和私钥都弄成了两个文件,test_pub.key,tesk.key。我自己调用RSA_public_encrypt和RSA_private_decrypt是可以解出来的。我认为可能是两边密钥不匹配,或者加密时数据不对导致的。请问这是怎么回事。

下面是我的代码:

OpenSSL 生成的公钥文件是base64编码好的吗

OpenSSL 生成的公钥文件是base64编码好的吗


下面是A系统的加密算法:


OpenSSL 生成的公钥文件是base64编码好的吗

Linux 下的工具们通常使用 base64 编码的文本格式,相关常用后缀如下:* 证书:.crt, .pem* 私钥:.key* 证书请求:.csr.cer 好像是二进制的证书。当然你也可以把证书和 key 放到同一个文件里边。这时候扩展名通常叫 .pem。java 的 keystore 什么的都是二进制的,好像是自有格式。其实在类 UNIX 系统上,关注文件名后缀的程序并不多的。而证书、密钥都是有明显的标识的,所以相关软件(如 openssl)可以处理,而不管你用的什么扩展名。当然乱用扩展名自己识别不便,桌面环境也不能将扩展名与默认操作、图标关联起来。如果不知道一个文件是个啥,可以使用 file 命令识别试试。有经验的也可以直接拿文本编辑器打开看看。

上一篇:tp5如何在视图里查询sql语句

下一篇:编写程序:输任意英文单词依次对其每字母输出后3位的字母,组成新字母序列输出如,输入cat,则出gdw