关于OPENSSL 实现 RSA加密几个问题



先用前人总结的RSA相关的资料介绍下:

一. RSA PEM文件格式

1. PEM私钥格式文件


1


2


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


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

2. PEM公钥格式文件


1


2


-----BEGIN
PUBLIC KEY-----


-----END
PUBLIC KEY-----

3. PEM RSAPublicKey公钥格式文件


1


2


-----BEGIN
RSA PUBLIC KEY-----


-----END
RSA PUBLIC KEY-----

二. OpenSSL密钥相关命令

1. 生成密钥


1


2


3


openssl genrsa -out key.pem 1024


    -out
指定生成文件,此文件包含公钥和私钥两部分,所以即可以加密,也可以解密


    1024
生成密钥的长度

2. 提取PEM格式公钥


1


2


3


openssl
rsa -in key.pem -pubout -out pubkey.pem


    -in
指定输入的密钥文件


    -out
指定提取生成公钥的文件(PEM公钥格式)

3. 提取PEM RSAPublicKey格式公钥


1


2


3


openssl
rsa -in key.pem -RSAPublicKey_out -out pubkey.pem


    -in
指定输入的密钥文件


    -out
指定提取生成公钥的文件(PEM RSAPublicKey格式)

4. 公钥加密文件


1


2


3


4


5


openssl
rsautl -encrypt -in input.file -inkey pubkey.pem -pubin -out output.file


    -in
指定被加密的文件


    -inkey
指定加密公钥文件


    -pubin
表面是用纯公钥文件加密


    -out
指定加密后的文件

5. 私钥解密文件

 


1


2


3


4


openssl
rsautl -decrypt -in input.file -inkey key.pem -out output.file


    -in
指定需要解密的文件


    -inkey
指定私钥文件


    -out
指定解密后的文件

 

 

那么问题来了:

问题一:PEM_read_RSA_PUBKEY和PEM_read_RSAPublicKey,大多数人都分不清区别,看上面分别是不同的功能,读

不同格式的公钥。所以不能混用,否则会运行失败。

PEM_read_RSA_PUBKEY 读PEM公钥

PEM_read_RSAPublicKey读 RSAPublicKey

问题二:上面对应的读取函数对了为什么,还是运行就出错了呢

intPEM_write_RSAPublicKey(FILE*fp,
RSA *x);文件指针使用fopen打开。国外网站说是fopen

的C库版本和openssl编译c库不一样运行就导致兼容性出错了。请确保在同一台机器编译好openssl,同一台

机器使用。

问题三:既然以上两点都注意了还错,那就是版本问题了,32位环境编译的在32位工程里面用,64位的在64位里面用

Debug版本用Debug的项目,Release版本用Release的项目。混用了要不然编译不过,要不然会运行闪退。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值