[英]OpenSSL RSA Keypair with X509 and PKCS#8 encoding in C or Obj-C
我已经苦苦挣扎多天了,在互联网上找不到任何准确的示例/教程,所以现在我在这里寻求帮助。
我有一个创建RSA密钥对的Java应用程序。 该密钥对用于加密和解密对称密钥。 (但首先要测试我想使用一个简单的文本字符串)。 生成密钥对后,对密钥进行编码。
PublicKey publicKey = KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(pbKey));
和
PKCS8EncodedKeySpec ks = new PKCS8EncodedKeySpec(pvBytes);
现在,我正在iOS上创建一个应用程序。 我想使用OpenSSL在iOS(C或Objective-C)中做同样的事情。
有人可以帮我吗?
我正在创建这样的密钥
RSA_generate_key_ex(rsa, modulus, e, NULL);
基本上,您所拥有的是私钥(ks)的PKCS#8编码。 即原始ASN.1。
我假设您将其写成原始编码( Java非对称加密:存储公钥/私钥的首选方法 , 解密后的字符串与预加密后的字符串不同 )。
因此,假设rsa已填充; 而“ enc”是
const EVP_CIPHER *enc=NULL;
或更可能
const EVP_CIPHER *enc=EVP_aes_XXX_cbc();
其中XXX类似于128位,则可以使用类似以下的方式调用PEM_write_bio_RSAPrivateKey:
PW_CB_DATA cb_data;
cb_data.password = passout;
cb_data.prompt_info = outfile;
BIO_set_fp(out,stdout,BIO_NOCLOSE);
if (!PEM_write_bio_RSAPrivateKey(out,rsa,enc,NULL,0,
(pem_password_cb *)password_callback,&cb_data))
goto err;
那应该差不多了。 可以从任何openssl源分发版中的apps / genrsa.c中提取代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.