openssl的密钥问题,高手指教!
uint8_t pkn[36],pkd[36],pkp[36],pkq[36],pku[36],pkdp[36],pkdq[36],pke[36];
RSA *key;
key = RSA_new();
key = RSA_generate_key(1024, 65537, NULL, NULL);
int r;
r = BN_bn2bin(key->e, pke);
r = BN_bn2bin(key->n, pkn);
r = BN_bn2bin(key->d, pkd);
r = BN_bn2bin(key->dmp1, pkdp);
r = BN_bn2bin(key->dmq1, pkdq);
r = BN_bn2bin(key->p, pkp);
r = BN_bn2bin(key->q, pkq);
r = BN_bn2bin(key->iqmp, pku);
//encrypt
RSA *pkey;
pkey = RSA_new();
pkey->dmq1 = BN_new();
pkey->dmp1 = BN_new();
pkey->p = BN_new();
pkey->q = BN_new();
pkey->iqmp = BN_new();
pkey->e = BN_new();
pkey->n = BN_new();
pkey->d = BN_new();
BN_bin2bn((unsigned char *)pkd, 0x80, pkey->d);
BN_bin2bn((unsigned char *)pkdq, 0x40, pkey->dmq1);
BN_bin2bn((unsigned char *)pkdp, 0x40, pkey->dmp1);
BN_bin2bn((unsigned char *)pkp, 0x40, pkey->p);
BN_bin2bn((unsigned char *)pkq, 0x40, pkey->q);
BN_bin2bn((unsigned char *)pku, 0x40, pkey->iqmp);
BN_bin2bn(pke, 0x3, pkey->e);
BN_bin2bn(pkn, 0x80, pkey->n);
// r = RSA_check_key(pkey);
r = RSA_public_encrypt(0x08, input, ouput, pkey, RSA_PKCS1_PADDING);
r = RSA_public_encrypt(0x08, input, output1, key, RSA_PKCS1_PADDING);
上面的代码,将key的p,q,n等八个导出然后再导入,结果二次加密结果不一样了?
这是什么原因?高手指教