C++实现RC4文件加密算法输出结果错误问题排查
RC4加密代码修复说明
你需要修改以下几处内容解决输出不符合预期的问题:
- 删除无效的首字符读取代码
打开文件后执行的char tekst; plik >> tekst;会提前读走文件第一个字符,导致后续加密流程丢失原文首字节(也就是"Plaintext"的首字母P),直接删除这两行即可。 - 修正temp变量的类型
你将temp定义为string类型,但RC4单次加密输出的是单字节结果,把字节异或值赋值给字符串会触发类型异常,输出内容错误。把string temp;修改为unsigned char temp;即可。 - 补充密文写入输出文件的逻辑
你当前只把加密结果输出到了控制台,没有写入提前创建的输出文件对象,在循环内cout << temp;后新增一行outfile << temp;即可完成文件写入需求。 - 可选:使用二进制模式读写文件
默认文本模式会对特殊字符做转义处理,容易导致二进制密文损坏,建议修改文件打开逻辑:// 读文件指定二进制模式 plik.open(path, ios::binary); // 写文件指定二进制模式 ofstream outfile(printFile, ios::binary);
内容的提问来源于stack exchange,提问作者18michal
相关产品推荐
相关产品推荐

