我正在學習一些AES實現的C代碼。加密代碼需要獲取作爲參數傳遞的密碼,以及加密和輸出文件。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 */
關鍵字串究竟發生了什麼?我認爲有一些邏輯性的東西和位操作。
你需要學習的指針。 – SLaks
看起來這個問題也可能是關於使用三元運算符(?)的問題。這只是編寫if-else語句的一種較短的方式。 – Egg
這可能會有點偏離主題,但只要將密碼字節插入到密鑰中,正確的[密鑰派生函數](http://en.wikipedia.org/wiki/Key_derivation_function)就是一個改進。 –