Encryption
具有 256 位密鑰的 RFC 4493 (AES-CMAC) 算法
我為新手的問題道歉。如果我要使用 256 位密鑰和 AES256(假設我有函式而不是 AES128,那麼函式 xor_128、leftshift_bit、generate_subkey 等中的 for 循環長度將保持為 16 正確嗎?因為 AES256 也返回 128 -位結果
範例 xor_128 函式
void xor_128(unsigned char *a, unsigned char *b, unsigned char *out) { int i; for (i=0;i<16; i++) { out[i] = a[i] ^ b[i]; } }
AES 具有 128、192 和 256 位密鑰大小,並且始終為 128 位塊大小。它們通常寫成 AES128、AES192 和 AES256。塊大小是隱含的,因為它始終為 128。
基本函式
xor_128
用於支持x-or
消息塊、密文塊和密鑰的CBC-MAC操作。無論密鑰大小如何,塊大小始終為 128。rfc4493 沒有提到 AES192 或 AES256。這並不意味著不能使用除 AES128 之外的任何其他設備。rfc4493 僅提供 AES128 的測試程式碼。
NIST 在 NIST 中提供測試向量:分組密碼操作模式 -用於 AES128、AES192 和 AES256 身份驗證的 CMAC 模式。
該
Generate_Subkey
算法還需要xor-128
派生密鑰,因為密鑰xored
與塊一起。這可以從程式碼中看出Step 4. if flag is true then M_last := M_n XOR K1; else M_last := padding(M_n) XOR K2;
常數是相同的,標準可以在 NIST 800-38B 中找到:建議分組密碼操作模式:用於身份驗證的 CMAC 模式