我想用 16 个十六进制值初始化一个无符号字符数组。但是,我似乎不知道如何正确初始化/访问这些值。当我尝试直观地访问它们时,我根本没有得到任何价值。
这是我的输出
The program was run with the following command: 4
Please be a value! -----> p
Here's some plaintext
使用以下代码运行时 -
int main(int argc, char** argv)
{
int n;
if (argc > 1) {
n = std::stof(argv[1]);
} else {
std::cerr << "Not enough arguments\n";
return 1;
}
char buff[100];
sprintf(buff,"The program was run with the following command: %d",n);
std::cout << buff << std::endl;
unsigned char plaintext[16] =
{0x0f, 0xb0, 0xc0, 0x0f,
0xa0, 0xa0, 0xa0, 0xa0,
0x00, 0x00, 0xa0, 0xa0,
0x00, 0x00, 0x00, 0x00};
unsigned char test = plaintext[1]^plaintext[2];
std::cout << "Please be a value! -----> " << test << std::endl;
std::cout << "Here's some plaintext " << plaintext[3] << std::endl;
return 0;
}
作为上下文,这是学校小组项目的一部分。我们最终试图实现 Serpent 密码,但不断被 unsigned char 数组绊倒。我们的项目规范说我们必须有两个函数来获取 Java 中的字节数组。我假设 C++ 中最近的亲戚是无符号字符 []。否则我会使用矢量。在代码的其他地方,我实现了一个 setKey 函数,它接受一个 unsigned char 数组,将其值打包成 4 个 long long 整数(密钥需要是 256 位),并对这些整数执行各种位移和异或操作以生成加密算法所需的密钥。希望这是我想要做的足够的背景。我猜我只是在这里忽略了一些基本的 C++ 功能。感谢您的任何帮助!