gpt4 book ai didi

c++ - 将任何文件视为加密/解密的比特流

转载 作者:行者123 更新时间:2023-11-28 03:03:27 26 4
gpt4 key购买 nike

应该是一个足够简单的任务,但我一直无法弄明白,因为我已经离开 C++ 一段时间了。

我有一个加密算法,我想在一个音频文件上测试。我想把这个文件分成 block ,每个 block 的大小都是 C++ int 的大小。然后我想通过算法传递这些值并将它们汇集到一个新的加密文件中。然后,我需要反转该过程以证明它可以被解密,最好是解密为可播放的音频文件。

我知道如何处理算法本身;它将数据放入 int 大小的 block 中,这就是问题所在。无论文件类型或格式如何,我将如何执行此操作,并且只读到文件末尾?我还必须能够看到填充最后一个 int 还需要多少数据,以便我可以使用加密方案存储它,以便稍后逆向过程。

这是否就像打开二进制输入并读取 int 直到文件末尾一样简单,即使文件中的数据不是数字?

澄清一下,无论我查看的是哪种文件,我都希望将数据视为数字。基本上,我希望能够输入任何格式的文件名并获得允许我读入整数的输入流,而忽略数据是否应该是数字、字母数字或任何其他形式的计算机数据。

最佳答案

这里有两种方法可以解决这个问题:

  • 一种方法是将整个文件放入内存中,放在 int vector 中。 vector 的大小可以通过获取文件的大小,加上sizeof(int)然后除以sizeof(int)来得到。这将使 vector 的大小适合文件中的所有数据,如 int,包括如果最后几个字节小于 int 的大小。

  • 另一种方法是一次读取一个int,只要文件没问题。当最后一次读取失败时,您检查 std::istream::gcount如果最后一次(失败的)读取设法读取任何内容

关于c++ - 将任何文件视为加密/解密的比特流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20209845/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com