OpenSSL库的RSA使用(上)-EVP方式

本文介绍了OpenSSL中RSA加解密的EVP方式,包括步骤和代码示例。通过EVP函数,可以实现公钥加密和私钥解密,但需要注意只能按公钥加密、私钥解密的顺序进行,否则会出错。在Windows平台,还需正确链接和引用库文件。
摘要由CSDN通过智能技术生成

1          RSA加解密方式介绍

使用OpenSSL的RSA方式加解密有两种方式,一种是使用EVP系列函数,这些函数提供了对底层加解密函数的封装;另外一种是直接使用RSA相关的函数进行加解密操作。如果是标准应用,如使用RSA公钥加密,私钥解密,使用EVP函数比较方便,如果有特殊应用,如私钥加密,公钥解密,EVP函数会有问题,可以直接使用RSA提供的函数。

         不过OpenSSL的RSA库经过测试,发现也有些问题,最后会对这些问题进行整理总结。

注:关于OpenSSL  RSA是谁,有啥本事,去哪能找到它,请自行找度娘或谷歌。

1      EVP函数方式

1.1    步骤

使用EVP函数方式加解密的一般步骤是:

          i.             生成公钥和私钥文件(公钥文件和私钥文件都是文本)

        ii.             打开公钥,使用公钥对源数据进行加密

       iii.             打开私钥,使用私钥对密文进行解密

1.2    代码

1.2.1包含文件与宏定义

#include <stdio.h>
#include <openssl/evp.h>
#include <crypto/evp/evp_locl.h>
#include <openssl/rand.h>
#include <openssl/rsa.h>
#include <openssl/pem.h>

#define RSA_KEY_LENGTH 1024
static const char rnd_seed[] = "string to make the random number generator initialized";

#ifdef WIN32
#define PRIVATE_KEY_FILE "f:\\rsapriv.key"
#define PUBLIC_KEY_FILE "f:\\rsapub.key"
#else   // non-win32 system
#define PRIVATE_KEY_FILE "/tmp/avit.data.tmp1"
#define PUBLIC_KEY_FILE  "/tmp/avit.data.tmp2"
#endif

#define RSA_PRIKEY_PSW "123"

#ifdef WIN32
#pragma comment(lib, "libeay32.lib")
#pragma comment(lib, "ssleay32.lib")
#endif

2.2.2 生成密钥文件

// 生成公钥文件和私钥文件,私钥文件带密码
int generate
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值