c++ - 如何在 C++ 中存储长十六进制值消息

标签 c++ hex

我正在学习一个加密类(class),其中一个作业要求我们对一堆十六进制密文进行异或运算,并尝试找到加密的消息。

我知道您可以在 int 或 long 前面做 '0x' 以在变量中保存十六进制值,但如果我的消息这么长怎么办:

271946f9bbb2aeadec111841a81abc300ecaa01bd8069d5cc91005e9fe4aad6e04d513e96d99de2569bc5e50eeeca709b50a8a987f4264edb6896fb537d0a716132d dc938fb0f836480e06ed0fcd6e9759f40462f9cf57f4564186a2c1778f1543efa270bda5e933421cbe88a4a52222190f471e9bd15f652b653b7071aec59a2705 081ffe72651d08f822c9ed6d76e48b63ab15d0208573a7eef027

我会溢出。有没有办法将整个消息放入一个变量中?我可以将消息分成多个子部分,但我更喜欢它是可变的而不是很多(如果可能的话)。我尝试使用字符串来保持按摩,但如何使用运算符“^”来表示异或?

或者有没有更简单的我不知道的技术?

谢谢

最佳答案

对于这样的事情,您通常会使用字符串或 vector<char>保存数据。您不能将整个字符串/vector 用作 ^ 的操作数, 但您可以一次应用一个字节。

如果您想简化其余代码,您可以创建一个重载 operator^ 的类进行按字节异或,所以你的代码看起来像 result = key ^ message; .

关于c++ - 如何在 C++ 中存储长十六进制值消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11893656/

相关文章:

c++ - 使用 CppUnit 链接测试库

c++ - 未初始化的变量被使用

robocopy 退出代码的 Powershell 按位比较

c++ - 在消息中显示每个字符的十六进制?

bash - Shell脚本中的十六进制到十进制

c++ - 如何将枚举本身作为数组

c++ - 为什么调用 printf ("%p",这个);删除后;非法的?

c++ - 谁能在我的递归函数中查明错误?

javascript 将十六进制值的字符串表示形式转换为十六进制

c - 将汇编翻译成 C 程序