Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c OpenSSL RSA密钥对,采用C或Obj-C中的X509和PKCS#8编码_Objective C_C_Openssl_X509_Pkcs#8 - Fatal编程技术网

Objective c OpenSSL RSA密钥对,采用C或Obj-C中的X509和PKCS#8编码

Objective c OpenSSL RSA密钥对,采用C或Obj-C中的X509和PKCS#8编码,objective-c,c,openssl,x509,pkcs#8,Objective C,C,Openssl,X509,Pkcs#8,我已经挣扎了好几天了,在互联网上找不到任何准确的例子/教程,所以现在我在这里寻求帮助 我有一个创建RSA密钥对的Java应用程序。此密钥对用于加密和解密对称密钥。(但首先要测试,我想使用一个简单的文本字符串)。生成密钥对后,对密钥进行编码 PublicKey publicKey = KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(pbKey)); 及 现在我正在iOS上创建一个应用程序。我想在iOS(C或O

我已经挣扎了好几天了,在互联网上找不到任何准确的例子/教程,所以现在我在这里寻求帮助

我有一个创建RSA密钥对的Java应用程序。此密钥对用于加密和解密对称密钥。(但首先要测试,我想使用一个简单的文本字符串)。生成密钥对后,对密钥进行编码

PublicKey publicKey = KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(pbKey));

现在我正在iOS上创建一个应用程序。我想在iOS(C或Objective-C)中使用OpenSSL做同样的事情

有人能帮我吗

我正在创建这样的关键点

RSA_generate_key_ex(rsa, modulus, e, NULL);

基本上,这里有一个PKCS#8编码的私钥(ks)。即未加工ASN.1

我假设你写下这个原始的,编码的(,)

假设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中提取代码

    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;