先用前人总结的RSA相关的资料介绍下:
一. RSA PEM文件格式
1. PEM私钥格式文件
|
|
2. PEM公钥格式文件
|
|
3. PEM RSAPublicKey公钥格式文件
|
|
二. OpenSSL密钥相关命令
1. 生成密钥
|
|
2. 提取PEM格式公钥
|
|
3. 提取PEM RSAPublicKey格式公钥
|
|
4. 公钥加密文件
|
|
5. 私钥解密文件
|
|
那么问题来了:
问题一:PEM_read_RSA_PUBKEY和PEM_read_RSAPublicKey,大多数人都分不清区别,看上面分别是不同的功能,读
不同格式的公钥。所以不能混用,否则会运行失败。
PEM_read_RSA_PUBKEY 读PEM公钥
PEM_read_RSAPublicKey读 RSAPublicKey
问题二:上面对应的读取函数对了为什么,还是运行就出错了呢
int
PEM_write_RSAPublicKey(
FILE
*fp,
RSA *x);文件指针使用fopen打开。国外网站说是fopen
的C库版本
和openssl编译c库不一样运行就导致兼容性
出错了。请确保在同一台机器编译好openssl,同一台
机器使用。
问题三:既然以上两点都注意了还错,那就是版本问题了,32位环境编译的在32位工程里面用,64位的在64位里面用
,Debug版本用Debug的项目,Release版本用Release的项目。混用了要不然编译不过,要不然会运行闪退。