我正在研究一些 AES 实现 C 代码。加密代码需要获取作为参数传递的密码,因此加密和输出文件。
我知道它会读取密码,并且还会对其进行处理并将其转换为密钥。但是在这个循环中,我无法真正理解它在做什么。
int main(int argc, char **argv) {
unsigned long rk[RKLENGTH(KEYBITS)];
unsigned char key[KEYLENGTH(KEYBITS)];
int i;
int nrounds;
char *password;
FILE *output;
if (argc < 3) {
fputs("Missing argument\n", stderr);
return 1;
}
password = argv[1]
for (i = 0; i < sizeof(key); i++)
key[i] = *password != 0 ? *password++ : 0; /* HERE IS WHERE I CAN'T GET IT */
密钥字符串到底发生了什么?我认为有一些逻辑的东西和位操作。