免费注册 查看新帖 |

Chinaunix

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

[C] 如何在程序中隐藏硬编码的字符串? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-05-19 10:05 |只看该作者 |倒序浏览
9可用积分
需求是这样的。客户端程序需要收集一些手机的本地信息然后加密传回服务器端。这个过程不希望被别人破译。一方面怕别人拿到这些信息。另一方面也怕别人了解算法和密钥后构造数据欺骗服务器

加密时客户端程序需要一个秘钥来对数据进行加密,但是这个秘钥不能被别人反编译看到(或者说很容易的)。请问该如何隐藏呢

比如下面这段代码不能被人用二进制编辑器打开直接打开看到"abcdefg"的内容,该怎么做呢

const char* str = "abcdefg";


当然,要是能让秘钥可以更新就更好了。但是需要一个完整周密在方案才能做到秘钥从服务器传输到客户端不被截获。而且客户端是手机。都是非登陆用户没办法标识客户端的唯一性。还有,如果要更新秘钥的话那秘钥在保存也是个问题

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
2 [报告]
发表于 2016-05-19 10:15 |只看该作者
用非对称算法呀,公钥反正是公开的。

另外一般加密算法没有要求密钥是字符串,任意二进制数据都可以

论坛徽章:
0
3 [报告]
发表于 2016-05-19 10:22 |只看该作者
回复 2# hellioncu

感谢回复

非对称算法也一样加密的私钥被获取一样可以用相同在秘钥来构建数据来欺骗服务器,这个应该不行

至于任意二进制可以做秘钥。这个请问怎么定义写代码才能让这段二进制数据被轻易看到呢?
   

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
4 [报告]
发表于 2016-05-19 10:39 |只看该作者
hw80520997 发表于 2016-05-19 10:22
回复 2# hellioncu

感谢回复


加密前定义一个数组,写点代码填充这个数组当作密钥,不跟踪就不知道密钥

论坛徽章:
0
5 [报告]
发表于 2016-05-19 10:54 |只看该作者

在生成二进制文件后,代码中的硬编吗部分会被生成类似这样的一段数据。数组也是一样。这样里面的信息很容易就被看到了


empty return str=%s text str=%s %2.2x get info start.... get_imsi get_imei get_mac get_device_id imsi imei mac device_id get_password_start 1 2 3 4 5 6 get_password_end pass_md5 json:%s  N9__gnu_cxx24__concurrence_lock_errorE  N9__gnu_cxx26__concurrence_unlock_errorE    __gnu_cxx::__concurrence_lock_error __gnu_cxx::__concurrence_unlock_error   std::bad_alloc  basic_string::at    basic_string::copy  basic_string::compare   basic_string::_S_create basic_string::erase basic_string::_M_replace_aux    basic_string::insert    basic_string::replace   basic_string::assign    basic_string::append    basic_string::resize    basic_string::_S_construct null not

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
6 [报告]
发表于 2016-05-19 11:00 |只看该作者
别硬编码字符串不就行了

论坛徽章:
0
7 [报告]
发表于 2016-05-19 11:01 |只看该作者
回复 6# hellioncu


   烦请赐教怎么不硬编呢?

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
8 [报告]
发表于 2016-05-19 11:32 |只看该作者
hw80520997 发表于 2016-05-19 11:01
回复 6# hellioncu


char key[16];

key[0] = x;
...
key[15]=4;

诸如此类的

论坛徽章:
6
2015年辞旧岁徽章
日期:2015-03-05 16:13:092015年迎新春徽章
日期:2015-03-05 16:13:092015小元宵徽章
日期:2015-03-06 15:58:1815-16赛季CBA联赛之浙江
日期:2016-11-05 14:38:4115-16赛季CBA联赛之新疆
日期:2016-11-11 18:38:06
9 [报告]
发表于 2016-05-19 11:36 |只看该作者
const char str[长度] = {0x12,0x34,0x56,...};

论坛徽章:
6
2015年辞旧岁徽章
日期:2015-03-05 16:13:092015年迎新春徽章
日期:2015-03-05 16:13:092015小元宵徽章
日期:2015-03-06 15:58:1815-16赛季CBA联赛之浙江
日期:2016-11-05 14:38:4115-16赛季CBA联赛之新疆
日期:2016-11-11 18:38:06
10 [报告]
发表于 2016-05-19 11:39 |只看该作者
字符串另行加密得十六进制串,替换掉前面的0x12,0x34,0x56,...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP