繁体   English   中英

C或Obj-C中具有X509和PKCS#8编码的OpenSSL RSA密钥对

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM