有没有人能帮我指导如何计算Mifare Desfire的MAC(4字节)和CMAC(8字节)?我得到了意外的结果。
Deskey = 0000000000000000
Block1(B1) = 1122334455667788
Block2(B2) = 9900112200000000
IV = 0000000000000000
sessionkey = 2923be84b1495461
R1 = Enc(B1 xor IV) f2f13994d24714ca
R2 = Enc(R1 xor B2) 880fe38ab9e8a8d3
MAC 880fe38a
Expected MAC = c8d70ad2 95a88a36
CMAC结果
AESKey = 00000000000000000000000000000000
Block = 000102030405060708090a0b0c0d0e0f
Enc(Block) = 7aca0fd9bcd6ec7c9f97466616e6a282
SubKey1 = CDD297A9DF1458771099F4B39468565C
SubKey2 = 9BA52F53BE28B0EE2133E96728D0AC3F
CMAC(16bytes) = 8A57896F795CB6ABF6867DAD41A5FB15
CMAC 只由 DES 和 TDES 生成,这是否属实?就像在零售 MAC 计算中,DES 加密所有块,除了最后一个块应该使用 TDES 加密一样。
0x0000000000000000
不是有效的DES密钥。 DES密钥需要为每个字节设置奇偶校验位。0x0101010101010101
将是有效的。 - Duncan Jones