C++ <--->PHP,使用OPENSSL中RSA加解密的问题
非常感谢CSDN各位大大一直以来的指点。。。
我现在的一个项目需要用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程序可以互相加解密呢。。。
[解决办法]
重了。。。。
第二个人这么说的:
For example the pubkey file should look like this:
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAo6uBphcbl
5iS7U0fjE1ZJ8ZPqYwezFbxyN13YYucrFDCbln9Q6S33lN
JMYKUY4711qzDOxQD0bratDQfHUl4waT35qI+NRQa2
B+UWHYaOhbt5FI0Ks7JXPxj3iJ/+joiKQW3Bj8eH8Nzg
sTx4tEVPD6QOHs682OhUNX6sqSnHA8= rsa-key-20060606
[解决办法]
楼主写个php扩展用来解密 ^_^"
[解决办法]
PEAR有类库,lz看看这里,很多东西不需要自己写。
http://pear.php.net/reference/Crypt_RSA-1.0.0/Crypt_RSA/_Crypt_RSA-1.0.0_RSA_php.html
[解决办法]
我从头到尾看了一遍,觉得yctin貌似理解错了。
楼主在13楼描述到: