如何在 C++ 中存储长十六进制值消息
How to store a long hex value message in C++
我正在学习一个加密类,其中一个作业要求我们x或一堆十六进制密文并尝试找到加密的消息。
我知道您可以在 int 或 long 前面执行"0x"以在变量中保存十六进制值,但是如果我的消息这么长怎么办:
271946f9bbb2aeadec111841a81abc300ecaa01bd8069d5cc91005e9fe4aad6e04d513e96d99de2569bc5e50eeeca709b50a8a987f4264edb6896fb537d0a716132ddc938fb0f836480e06ed0fcd6e975 9f40462f9cf57f4564186a2c1778f1543efa270bda5e933421cbe88a4a52222190f471e9bd15f652b653b7071aec59a2705081ffe72651d08f822c9ed6d76e48b63ab15d0208573a7eef027我会溢出。有没有办法将整个消息放入一个变量中?我可以将消息拆分为子部分,但我更喜欢它在变量中而不是许多(如果可能的话)。我尝试使用绳子来保持按摩,但是如何使用运算符"^"进行异或?
还是有我不知道的更简单的技术?
谢谢
对于这样的事情,您通常使用字符串或vector<char>
来保存数据。你不能使用整个字符串/向量作为操作数来^
,但你可以一次应用一个字节。
如果要简化代码的其余部分,可以创建一个重载operator^
执行按字节 XOR 的类,这样您的代码看起来像 result = key ^ message;
.
您可以使用任何大小的整数数组,并一次将运算符应用于一个元素(这可能比字符数组更有效)。 @JerryCoffin 将其包装在带有重载运算符的类中的想法很好,无论您使用的实际表示形式如何。
把它放在一个单独的文本文件中
将文件读入缓冲区
将 ASCII 字符转换为十六进制值
Jerry & Scott提出了合理的建议。 另一种选择是使用现有的库:例如,http://gmplib.org 的GNU GMP任意精度数学库,它支持XOR(见 http://gmplib.org/manual/Integer-Logic-and-Bit-Fiddling.html#Integer-Logic-and-Bit-Fiddling)和"scanf"风格的函数以十六进制读取(见 http://gmplib.org/manual/Formatted-Input-Strings.html#Formatted-Input-Strings),并明确旨在为密码学提供出色的支持。
- 如何在openssl-ecc中获取十六进制格式的私钥
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- 通过错误处理,在C++中可靠地获得用户十六进制输入
- 为什么mpfr_printf与十六进制浮点(%a转换说明符)的printf不同
- 在 std::无符号字符的向量处存储 int 的十六进制表示形式
- 指向存储在字符串 c++ 中的十六进制
- 读取文件中所有可能的十六进制 16 字节序列并打印每个序列
- C ++如何使用UTF8十六进制代码打印UTF8符号?
- 如何将字节数组元素替换为修改的十六进制 ASCII 符号?
- 如何在C++中将十六进制字符串转换为文本数据
- 使用 sprintf 将十六进制0xAABBCC转换为字符串"AA:BB:CC"
- 绝对编码器十六进制输入
- 为什么C++总是显示十六进制内存地址,而不仅仅是整数?
- 发送和十六进制消息时套接字代码C++问题
- 如何在 C++ 中存储长十六进制值消息
- "first-chance exception..."消息中的十六进制数字是什么意思?
- 在消息中显示每个字符的十六进制