亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3795 | 回復(fù): 4
打印 上一主題 下一主題

大家好,有對OPENSSL熟悉的朋友么? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2009-02-17 14:34 |只看該作者 |倒序?yàn)g覽
是這樣,我有一個COM組件,作用是使用OPENSSL的RSA算法加密一串字符串,保存密鑰到MYSQL數(shù)據(jù)庫,然后用PHP解密出原文。

在C++中,密鑰是這樣生成出來的

m_pRsa = RSA_new();
m_pRsa = RSA_generate_key(m_rsa_bits,RSA_F4,NULL,NULL); /
用下面2個函數(shù)得到公鑰和私鑰
len = i2d_RSAPublicKey(m_pRsa, &t); //得到公鑰,然后我會把公鑰保存到MYSQL數(shù)據(jù)庫中,私鑰也是這么保存的。。
len = i2d_RSAPrivateKey(m_pRsa, &t); //得到私鑰

可由于在PHP中,我要使用PHP內(nèi)置的OPENSSL擴(kuò)展,我必須提供PEM格式的密鑰。

而我無法將C++用i2d得到的密鑰在PHP中使用。

所以,我想直接用OPENSSL的API得到PEM格式的公鑰和私鑰。(最好是得到在內(nèi)存緩存里,而不是寫入文件的API,如果只有寫入文件的API也可。我再讀到內(nèi)存 - -!)
但是由于我對OPENSSL并不熟悉,所以沒找到這樣的API

大家能提供一些幫助么?

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2009-02-18 15:47 |只看該作者
懂你的意思,不過我也沒做了,但openssl中提供的流轉(zhuǎn)換操作肯定可以轉(zhuǎn)成pem格式
網(wǎng)上這類資料也很多,搜搜就有了

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2009-02-18 15:53 |只看該作者
i2d_RSAPrivateKey_bio()
i2d_RSAPublicKey_bio()
--------------

改正,這兩個函數(shù)沒用

[ 本帖最后由 fly6 于 2009-2-18 16:23 編輯 ]

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2009-02-18 16:17 |只看該作者
rsa = RSA_generate_key(1024, RSA_F4, NULL, NULL);
        if(rsa==NULL)
        {
                printf("gen rsa error\n");
                return false;
        }

        BIO *bp = BIO_new(BIO_s_file());
        if(BIO_write_filename(bp, "c:\\test.pem")<=0)
        {
                printf("write error\n");
                return false;
        }

        if(PEM_write_bio_RSAPublicKey(bp, rsa)!=1)
        {
                printf("write public key error\n");
                return false;
        }

        BIO_free_all(bp);

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2009-02-18 16:36 |只看該作者
RSA *rsa=NULL;
        printf("正在產(chǎn)生RSA密鑰...");
        rsa = RSA_generate_key(1024, RSA_F4, NULL, NULL);
        if(rsa==NULL)
        {
                printf("gen rsa error\n");
                return false;
        }
        // 公鑰
        BIO *bp = BIO_new(BIO_s_file());
        if(BIO_write_filename(bp, "c:\\public.pem")<=0)
        {
                printf("write error\n");
                return false;
        }
        if(PEM_write_bio_RSAPublicKey(bp, rsa)!=1)
        {
                printf("write public key error\n");
                return false;
        }       
        BIO_free_all(bp);
       
        char passwd[]="1234";
        // 私鑰
        bp = BIO_new_file("c:\\private.pem", "w+");
        if(PEM_write_bio_RSAPrivateKey(bp, rsa, EVP_des_ede3(), (unsigned char*)passwd, 4, NULL, NULL)!=1)
        {
                printf("write public key error\n");
                return false;
        }
        BIO_free_all(bp);

--------------------
經(jīng)過測試應(yīng)該是可以的
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP