背景
我有一个 Lua 环境,它内置了河豚加密 (CBC, IV = {00..0})。AES 不可用,纯 Lua AES 实现会变慢。
问题
我想根据RFC 4493中指定的算法生成 CMAC,该算法基于 AES。由于我需要这个 CMAC 在 Lua 环境和我自己构建的另一个程序之间进行交换,我想我只是将所有 AES crypt 函数更改为 Blowfish 函数。
每个 CMAC 的输入长度为 26 字节,而不同 CMAC 代之间只有几个字节发生变化。例如:
AAAAAAAAAAAA BA AACCCCCCCDDDDDDDDDFFFFFFFFFFFFFFFFFFFF
AAAAAAAAAAAA AB AACCCCCCCDDDDDDDDDFFFFFFFFFFFFFFFFFFFF
这导致了问题,即 CMAC 的第一部分对于每个输入都是相同的,只有最后一部分发生了变化:
0123456789ABCDEF 48534593402BC93D
0123456789ABCDEF DF82BC920DA92383
这是河豚算法的问题吗?我能做些什么(更改 CMAC 算法)来确保我得到不同的结果,尤其是对输入只有很小的更改?