【发布时间】:2016-01-29 06:41:33
【问题描述】:
当以下函数用于生成 1024 位的 RSA 密钥对时。
rsa_key = RSA_generate_key ( 1024, 3, NULL, NULL );
keyPair = BIO_new ( BIO_s_mem ( ) );
PEM_write_bio_RSAPrivateKey(keyPair, rsa_key, NULL, NULL, 0, NULL, NULL);
keyPair_len = BIO_pending(keyPair);
那么得到的keyPair_len不是1024,是882。 减少的原因是什么。
通过使用 RSA_generate_key() 函数,我们是生成密钥对还是仅生成私钥。 如果是这样,当我们从中提取私钥和公钥时,它会生成不同长度的私钥和公钥。
evp_key = EVP_PKEY_new();
ret = EVP_PKEY_assign_RSA ( evp_key, rsa_key );
pri = BIO_new ( BIO_s_mem ( ) );
pub = BIO_new ( BIO_s_mem ( ) );
PEM_write_bio_PrivateKey ( pri, evp_key, NULL, NULL, 0, NULL, NULL );
PEM_write_bio_PUBKEY ( pub, evp_key );
pri_len = BIO_pending(pri);
pub_len = BIO_pending(pub);
pri_len pub_len 的长度分别为 916 和 272。 任何人都可以帮助理解为什么会这样吗?
【问题讨论】:
标签: openssl cryptography