当前位置: 代码迷 >> 综合 >> OPENSSL RSA加密算法API
  详细解决方案

OPENSSL RSA加密算法API

热度:31   发布时间:2024-01-04 02:17:08.0

RSA是公钥密码体制的典范,在本实验中,我们的将使用OpenSSL自带的RSA相关函数生成RSA加密体系。下面是可能要使用到的一些函数说明。 
(1)RSA *RSA_generate_key(int bits, unsigned long e_value, void (callback)(int, int, void ), void *cb_arg) 
函数功能:生成RSA密钥对。 
参数说明: 
bits:int数据类型,表示模数比特数,目前至少应使用1024或2048。 
e_value:unsigned long数据类型,表示公钥指数e,建议该值使用OpenSSL提供的两个常数RSA_3或者RSA_F4。 
callback回调函数由用户实现,用于报告密钥生成状态的回调函数,可为空。 
其中RSA的结构为: 
struct rsa_st 

/* 其他 */ 
const RSA_METHOD *meth; 
ENGINE *engine; 
BIGNUM *n; //参数n 
BIGNUM *e; //参数e 
BIGNUM *d; //参数d 
BIGNUM *p; 
BIGNUM *q; 
BIGNUM *dmp1; 
BIGNUM *dmq1; 
BIGNUM *iqmp; 
CRYPTO_EX_DATA ex_data; 
int references; 
/* 其他数据项 */ 
}RSA; 

(2)RSA_public_encrypt(int flen,unsigned char * from,unsigned char * to ,RSA *rsa,in padding); 
函数功能:公钥加密,使用rsa里面的公钥,加密从from(通常是一个会话密钥)来的flen字节到to里面 
参数说明: 
flen:待加密的明文长度 
from:待加密的明文 
to:存储密文的指针 
rsa:提供加密过程使用到的公钥等参数 
padding:加密模式,最常用的加密模式是RSA_PKCS1_PADDING 
返回值:加密得到的密文的字节数 
(3)RSA_private_decrypt(int flen,unsigned char * from,unsigned char * to ,RSA *rsa,in padding); 
函数功能:私钥加密,使用rsa里面的私钥,解密从from(通常是一个会话密钥)来的flen字节到to里面 
参数说明: 
flen:待解密的密文长度 
from:待解密的密文 
to:存储加密后明文的指针 
rsa:提供解密过程使用到的私钥等参数 
padding:解密密模式,需要与加密模式保持一致,最常用的加密模式是RSA_PKCS1_PADDING 
返回值:解密得到的明文字节数 
(4)void RSA_free(RSA *rsa); 
函数功能:释放RSA对象 
参数说明: 
rsa待释放的对象指针

  相关解决方案