我为新手的问题道歉。如果我使用一个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];
}
}发布于 2020-05-26 20:40:24
AES有128、192和256位密钥大小,并且始终是128位块大小.它们通常被写成AES128、AES192和AES256。块大小是隐式的,因为它总是128。
基本功能xor_128用于支持CBC对消息块、密文块和密钥的x-or操作。无论键大小如何,块大小始终为128。
rfc4493没有提到AES192或AES256。这并不意味着一个人不能使用AES128以外的任何其他东西。rfc4493只为AES128提供测试代码。
NIST在NIST:分组密码操作模式- CMAC认证模式中为AES128、AES192和AES256提供测试向量。
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认证模式中找到
https://crypto.stackexchange.com/questions/81006
复制相似问题