BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / security / #31510同步于 2011/1/2
Security机器人发帖

[合集] [求助]加密代码能对struct这种结构体加解密吗

BookMoth
2011/1/2镜像同步0 回复
☆─────────────────────────────────────☆ dgcr (动感超人) 于 (Mon Nov 29 15:51:21 2010) 提到: 在网上下载了一个des的加密算法 函数的定义如下 int DES(unsigned char *bufferin, unsigned char *bufferout, unsigned char *key, long mode) 对字符数组类型的数据能够正确的加解密,但是如果是把struct类型的数据强行转化为 unsigned char *后加密,解密后就不能恢复出正确的结构体里的数据了 请问一般加密方式不是应该用二进制方式吗?socket编程里的send函数也是要求输入char型的数据,但输入struct类型后,接收后仍然能够正确的恢复啊。为什么加密程序不行呢?试了好几个源代码了 ☆─────────────────────────────────────☆ BookMoth (书中蠹鱼) 于 (Mon Nov 29 16:13:00 2010) 提到: 手头没有代码,没法验证这个问题。有个地方可能会影响: 结构体转换char * 的时候是不是正确的?就是说先验证一下 struct 到 u char 再翻回来这个是不是正常的。 然后就是DES算法会对数据本身不足64位的做补零的操作,会不会对你的结构体有影响? 说的不一定对,供参考。 【 在 dgcr (动感超人) 的大作中提到: 】 : 在网上下载了一个des的加密算法 : 函数的定义如下 : int DES(unsigned char *bufferin, : ................... ☆─────────────────────────────────────☆ rayallen (boston) 于 (Mon Nov 29 16:23:35 2010) 提到: 为何不把函数改一下,参数用二进制,输入输出另写,就不会出问题了吧。 问题多半都是LS说的。 ☆─────────────────────────────────────☆ smilefufu (不水的FuFu) 于 (Mon Nov 29 20:43:54 2010) 提到: 补零其实不会有影响。结构体大小是固定的,所以解密后,得到数据块的大小减去sizeof(结构体)就是补了多少零 ☆─────────────────────────────────────☆ hydralisk001 (hydralisk001) 于 (Tue Nov 30 10:07:52 2010) 提到: 问题应该是出在struct和char*的转换上,可否写个出错的代码放上来看一下? ☆─────────────────────────────────────☆ smilefufu (不水的FuFu) 于 (Tue Nov 30 12:15:48 2010) 提到: 没什么转换不转换的。(char*)强制转换就可以。反正内存里的数据也不分什么类型不类型的。 问题在于,DES这个函数对输入长度的判断。如果是以'\0'为结束符的话(认为char*是字符串,以'\0'结束),那么struct里如果某一位有0x00的话,就会被直接截断(杯具了吧-_,-) 如果楼主找的DES算法是这样加密的话,建议进行一下改写,给函数多加一个参数,标记输入数据块的大小即可。 【 在 hydralisk001 的大作中提到: 】 : 问题应该是出在struct和char*的转换上,可否写个出错的代码放上来看一下? : -- : 我脚正不怕影子斜! : ................... ☆─────────────────────────────────────☆ hydralisk001 (hydralisk001) 于 (Tue Nov 30 23:03:37 2010) 提到: 其实我就是这个意思,没说清楚 【 在 smilefufu 的大作中提到: 】 : 没什么转换不转换的。(char*)强制转换就可以。反正内存里的数据也不分什么类型不类型的。 : 问题在于,DES这个函数对输入长度的判断。如果是以'\0'为结束符的话(认为char*是字符串,以'\0'结束),那么struct里如果某一位有0x00的话,就会被直接截断(杯具了吧-_,-) : 如果楼主找的DES算法是这样加密的话,建议进行一下改写,给函数多加一个参数,标记输入数据块的大小即可。 : ................... ☆─────────────────────────────────────☆ smilefufu (不水的FuFu) 于 (Wed Dec 1 10:04:55 2010) 提到: =。= ☆─────────────────────────────────────☆ DrJan ( DrJan) 于 (Wed Dec 1 10:13:40 2010) 提到: 看完此楼 觉得文档能力很重要
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。