【学术尚浅】win-agent解密失败

问题:linux(centos6.8)proxy server生成明文字符串"id guid ip workkey"---->分量合成加密密钥(BlowFish算法)---->密文---->base64---->可见字符串

---->手动导入windows agent--->解base64+解密(相同分量合成的密钥)--->解密失败。

排查问题:

猜想1:linux和windows共用的base64/md5/BF算法实现有问题,大小端序或者编译器优化问题。

分步尝试三种实现,操作同一字符串,结果一致。

猜想2:windows调用GetWindowTextLength()获得的字符串包含特殊字符‘\r\n’。

将代码中需要解base64和解密的buff写死,测试还是不通过。

猜想3:合成的密钥不一致。

将linux和windows合成的密钥打印出来,进行比较,结果:windows合成的密钥比linux结尾多一个字符!!!(涉及密钥,不便粘贴出来)

究其原因,特别基础的一个知识点:

 

如果snprintf()格式化后的字符串大于count的话,linux和windows处理方式是不一致的。windows可能会溢出!!

 

posted @ 2018-09-04 15:49  pangkr  阅读(112)  评论(0)    收藏  举报