openssl

eas加密:加密模式有很多,ecb,cbc等。key16-24-32字节,16字节为单位块进行加密

rsa:遇到的问题:PEM_read_RSAPublicKey函数返回NULL

rsa加密的public key格式有多种,常见的有两种,一种密钥头为‘-----BEGIN RSA PUBLIC KEY-----’,一种开头为‘-----BEGIN PUBLIC KEY-----’,二者分别对应rsa的PKCS#1和PKCS#8格式。使用openssl库加载rsa的公钥时,使用的函数也不同。以字符串公钥为例,对PKCS#1格式的密钥加载使用PEM_read_bio_RSAPublicKey()函数,对PKCS#8格式公钥的加载使用PEM_read_bio_RSA_PUBKEY()函数。

RSA_size(privateRsa)的长度是根据密钥长度决定的,RSA_generate_key(2048, RSA_F4, NULL, NULL);其中2048是私钥长度,RSA_size(privateRsa)=私钥长度/8。2048计算出来的长度为256,1024计算出来是128。

rsa加密长度不能大于RSA_size(privateRsa)-11(如128-11=117)个数据,否则报错。

int RSA_public_encrypt(int flen, const unsigned char *from, unsigned char *to,RSA *rsa, int padding)

其中flen <= RSA_size(privateRsa)-11;

from输入,加密以0为结束符,就相当于把他当作字符串。 比如from[117]={0x01,0x02,0x3,0x00},其实只加密了前3个数据

to我看网上都是用的 RSA_size(privateRsa)大小

padding没研究RSA_PKCS1_PADDING

 

你可能感兴趣的:(openssl)