关于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的项目。混用了要不然编译不过,要不然会运行闪退。



【版权声明】<br>本openssl的VC软件包由王志海(DragonKing)根据openssl整理提供,Eric Young's拥有对所有源代码的最终版权,一切应用应该遵照openssl的声明。该版本为openssl-0.9.6h<br>欢迎联系本人或提意见:<br>Email:wzhah@263.net<br>HomePage: http://gdwzh.126.com[openssl中文专业论坛,提供大量中文资料]<br>【功能说明】<br>本软件包将每个openssl的apps程序做成一个可直接运行调试的VC Console 类型应用程序,方便研究和运用openssl的朋友,避免了openssl在windows下的编译问题,并且因为可以在VC环境下进行调试,使得对openssl的各个应用程序的流程更容易理解,这对openssl初学者尤其方便。希望大家多提意见。<br>【使用说明】<br>要正确使用该工程文件,呢应该从http://gdwzh.126.com获取如下目录和文件:<br>1.Windows平台下openssl动态库,包含两个dll文件,将他们拷贝到Windows/system32目录下;<br>2.Windows平台下openssl静态库,下载解压后得到一个名为lib的文件夹,包含两个lib文件;<br>3.openssl的头文件,下载解压后得到一个名为include的录。<br>4.Windows平台rsa项目文件,下载解压后得到一个名为rsa的目录,里面包含了项目主文件;<br>5.将目录lib、include、和rsa拷贝到同一个目录下;<br>6.完成上述步骤,就可以像普通的VC项目一样进行调试编译了,有任何问题,请到http://openssl.126.com提问。<br>【注意】<br>1.获取最新信息请到http://gdwzh.126.com的openssl专业论坛.<br>2.编译好的运用程序有可能需要其它的openssl文件支持,如openssl.cnf等,请参照openssl相关文档或本站信息公布。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值