很多时候我只是优秀工具的使用者,优秀的工具用好了才能发挥作用
最近使用cryptopp的base64对压缩后的zip文件内容进行加密遇到了问题。
首先zip压缩没问题,可是最后得到的base64字符串不对:
1、长度不对(问题应该是源字符串的问题)
2、使用现成的工具解密得不到zip文件内容(问题没有头绪)
3、计算得出的MD5无效
既然没法从问题的表现来推理解决,那就从正常逻辑往后判断问题的根源点
1、先检查zip的读取,利用fread读出后再fwrite写入,以确定fread的内容是有效的
此过程中发现fwrite写入的zip文件异常,对比文件的十六进制数据后发现在每一个0x0A前面都多了一个0x0D,对比ascii码就知道是换行符的问题;
但fread不会有问题,一个意外收获,至此确定fread读出的内容没问题。
2、检查base64的输出内容,首先来看base64的调用代码:
string getBase64(const byte* src, const int len) { Base64Encoder encoder; encoder.Put(src, len); encoder.MessageEnd(); lword size = encoder.MaxRetrievable(); byte* encodestr = new byte[size + 1]; encodestr[size] = '