这主要是:
std::ofstream rainbow_file("rainbow.bin", std::ios::binary);
rainbow_file.write((const char*) p.pass, password::PASSWORD_SIZE);
rainbow_file.write((const char*) h.hash_, hash::HASH_SIZE);
在哪里 :
class hash
{
public:
static const size_t HASH_SIZE = 32;
uint8_t hash_[HASH_SIZE];
...
}
// similar for pass
我在 Notepad++ 中打开 Rainbow.bin 文件,我看到我的通行证是通行证(字符 AZ、@、!、az、0-9)和哈希的二进制垃圾。稍后我会这样做:
std::ifstream rainbow_file("rainbow.bin", std::ios::binary);
rainbow_file.read((char*) p.pass, password::PASSWORD_SIZE);
rainbow_file.read((char*) h.hash_, hash::HASH_SIZE);
我将通行证作为二进制垃圾返回。我尝试了很多事情(比如打开两个流 - 一个不是二进制模式 - 并使用 seekg 分别移动文件指针,尝试各种强制转换等),但对于我的生活,我无法让它工作。我很好奇为什么。并且很沮丧。我在 npp 中重复一遍,我看到所有的东西都是有序的。
编辑:这些是不同的控制流,并且流被正确关闭()
编辑2:工作!仍然请参阅下面的答案和评论以了解更多的 C++ 方式