免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5255 | 回复: 6
打印 上一主题 下一主题

C++ <--->PHP,使用OPENSSL中RSA加解密的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-10 14:36 |只看该作者 |倒序浏览
我现在的一个项目需要用C++写的COM组件加密一串字符串,保存密钥到MYSQL数据库,然后用PHP解密出原文

现在的关键的问题就是密钥的问题。。。C++下得到并保存的密钥不能在PHP中使用

在C++中,密钥是这样生成出来的

  1. m_pRsa = RSA_new();
  2. m_pRsa = RSA_generate_key(m_rsa_bits,RSA_F4,NULL,NULL);
  3. len = i2d_RSAPublicKey(m_pRsa, &Pt); //得到公钥,然后我会把公钥保存到MYSQL数据库中,私钥也是这么保存的。。
  4. 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程序可以互相加解密呢。。。

论坛徽章:
0
2 [报告]
发表于 2009-02-10 16:49 |只看该作者
BAIDU: PHP RSA

论坛徽章:
0
3 [报告]
发表于 2009-02-10 17:03 |只看该作者
原帖由 james.liu 于 2009-2-10 16:49 发表
BAIDU: PHP RSA


大哥,请一定相信我解决问题的诚意。。。GOOGLE上各种组合的关键词我都搜索过了。。仍在迷途中。。。

论坛徽章:
0
4 [报告]
发表于 2009-02-10 23:39 |只看该作者
把代码贴出来看看嘛

论坛徽章:
0
5 [报告]
发表于 2009-02-12 14:46 |只看该作者
原帖由 imdemon 于 2009-2-10 17:03 发表


大哥,请一定相信我解决问题的诚意。。。GOOGLE上各种组合的关键词我都搜索过了。。仍在迷途中。。。



有收获了吗?

论坛徽章:
0
6 [报告]
发表于 2009-02-12 17:23 |只看该作者
原帖由 james.liu 于 2009-2-12 14:46 发表

有收获了吗?


多谢大哥关心~~
我在CSDN上也问了这个问题。。
http://topic.csdn.net/u/20090210 ... tml?seed=2020628854
现在情况是这样的


我需要将我在C++中保存的密钥数据,用PHP转成PHP中可用的密钥格式

  1. m_pRsa = RSA_new();
  2. m_pRsa = d2i_RSAPublicKey(NULL, &Pt, KeyDataLen); //
  3. m_pRsa = d2i_RSAPrivateKey(NULL, &Pt, KeyDataLen);//

  4. //在C++中,我这样保存的DER格式的密钥。。。
复制代码



在PHP中,只能使用PEM格式的密钥。。。
http://cn2.php.net/manual/en/function.openssl-public-decrypt.php

因此,我需要做一个转换。。。但我对PEM和DER格式都不了解。。。。所以来求助CU的达人能否在这方面提供帮助?

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
7 [报告]
发表于 2009-02-12 22:22 |只看该作者
实在不行的话,就做个扩展封装一下子,方便多了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP