【学术尚浅】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可能会溢出!!