我正在尝试为学校项目实施 AES。我的目标是将加密文本输出到屏幕和 .txt 文件。加密完全符合预期,我可以通过查看以下内容来验证这一点:
for (int j = 0; j<object.words * 4; j++)
{
printf("%02x ", Encryptor.out[j]);
}
它正在加密的文本是“我很高兴这有效”,使用 128 位密钥“狗”,此循环打印加密的前 16 个字符,内容如下:
c8 88 45 0d 5d 40 ff 5b a4 55 91 c9 c4 00 f5 a4
我已经验证这是 AES 在这种情况下应该打印的内容。后来,我有以下几行输出:
this is Encryptor.out[0] in cout: ╚
This is Encryptor.out[0] in printf with the format code '%02x': c8
Press any key to continue . . .
我的 cout 调用可能只需要一个格式化代码,所以我并不担心。并发症就在这一点上:
ofstream OutFile("Encrypted.txt");
Outfile << Encryptor.out[0];
此时,Encrypted.txt 中包含的唯一内容是单个字符“È”。我知道十六进制的 c8 在 ASCII 中是 'È',但我希望它打印原始的十六进制值。
所以最终,我的问题是,如何让这个字符作为“c8”保存在我的输出文件中?是否有 ofstream 可以使用的格式化代码,还是我必须跳过一些障碍?
多谢你们!