此错误来自 加密/ RSA / rsa_none.c
int RSA_padding_add_none(unsigned char *to, int tlen, const unsigned char *from, int flen) { if (flen > tlen) { RSAerr(RSA_F_RSA_PADDING_ADD_NONE,RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE); return(0); } if (flen < tlen) { RSAerr(RSA_F_RSA_PADDING_ADD_NONE,RSA_R_DATA_TOO_SMALL_FOR_KEY_SIZE); return(0); } memcpy(to,from,(unsigned int)flen); return(1); }
来自 rypto / RSA / rsa_eay.c
static int RSA_eay_public_encrypt(int flen, const unsigned char *from, unsigned char *to, RSA *rsa, int padding) ... i=RSA_padding_add_none(buf,num,from,flen);
该 flen 是一个消息len;和 tlen 来自: num=BN_num_bytes(rsa->n);
flen
tlen
num=BN_num_bytes(rsa->n);
所以, 的 您需要的数据与您的数据具有相同的字节长度 N RSA密钥的参数 强>
N
另外,据我所知,您的数据必须小于N(如果被视为单个长长二进制数)
您可以使用非随机数据自行执行填充到适当的密钥长度