【发布时间】:2013-01-16 12:19:37
【问题描述】:
我在 Visual Studio 2010 专业版的 c++ 项目中插入密钥时遇到了一个小问题。
当我放键时只接受前两个键,当你放一个以前两个字符开头的类似键时,这可能会出现问题。
但是,当我将密钥直接放入十六进制字符时,会验证所有内容。
我提前说清楚了我学c++知道的很少 这就是我现在所做的。
//****************** AES decryption ********************
const int size = 32;
unsigned char aesKey[size];
char* p;
for (int i = 1; i < argc || i < size; ++i)
{
aesKey[i] = (unsigned char)strtol(argv[2], &p, 16);
}
unsigned char *buf;
aes256_context ctx;
aes256_init(&ctx, aesKey);
for (unsigned long i = 0; i < lSize/16; i++) {
buf = text + (i * 16);
aes256_decrypt_ecb(&ctx, buf);
}
aes256_done(&ctx);
//******************************************************
我有参数 argv[2] 是因为我必须使用参数 2
任何建议或想法,谢谢
【问题讨论】:
-
为什么
i < argc是条件的一部分? -
我不知道它对我有帮助,以前 argv [2] 有 argv [i] 但我改变了,因为我被冻结了
-
您的代码看起来像 C。使用 C++ 的原因之一是不必考虑这类问题。
-
@aleksanderhaugas 您缺少基础知识。先从good book 开始怎么样?或者至少告诉我们(用简单的话)你想要达到的目标。
-
但是如果我把 `for(register int i = 0; i!=size;++i) ` 我感觉一样
标签: c++ visual-studio-2010 visual-c++