- 论坛徽章:
- 0
|
我现在的一个项目需要用C++写的COM组件加密一串字符串,保存密钥到MYSQL数据库,然后用PHP解密出原文
现在的关键的问题就是密钥的问题。。。C++下得到并保存的密钥不能在PHP中使用
在C++中,密钥是这样生成出来的
- m_pRsa = RSA_new();
- m_pRsa = RSA_generate_key(m_rsa_bits,RSA_F4,NULL,NULL);
- len = i2d_RSAPublicKey(m_pRsa, &Pt); //得到公钥,然后我会把公钥保存到MYSQL数据库中,私钥也是这么保存的。。
- len = i2d_RSAPrivateKey(m_pRsa, &Pt);
复制代码
现在在PHP中。。
我从MYSQL数据库中读出密钥到$RealPubKey。。
然后这样调用
openssl_public_encrypt($message,$encoded,$RealPubKey);
但是这样是错误的。
Warning: openssl_public_encrypt(): key parameter is not a valid public key in c:\program files\easyphp1-8\www\4.php on line 46
这也许是我对密钥的理解不对造成的。。。。我不知道openssl_public_encrypt这个函数所需要的密钥应该是怎样的格式。。看了一些示例代码,但那些都是从一个格式为crt的文件里读取的密钥信息,这和我目前这个项目有不一样的地方。。
在PHP中使用OPENSSL,好像没有和以下C++语句等效的代码。。PHP的OPENSSL扩展中,似乎都没有struct RSA这个结构体来保存密钥信息。。
m_pRsa = RSA_new();
m_pRsa = d2i_RSAPublicKey(NULL, &Pt, KeyDataLen); //设置公钥
m_pRsa = d2i_RSAPrivateKey(NULL, &Pt, KeyDataLen);设置私钥
我应该怎样保存密钥才能使得C++程序和PHP程序可以互相加解密呢。。。 |
|