我正在开发支持Counter with CBC-MAC mode的AES库,我对TAG(MAC)大小有疑问。
TAG大小是否必须由用户提供,或者可以从其他参数(如标题大小,IV(计数器或非现金)大小)计算并返回给用户?
在我的库中,我声明了一个函数如下:
AES-CCM(Encrypt, header, header size, Nounce, NonceSize, PlainText,
PlainTextSize, &TAGSize, &CipherText);
答案 0 :(得分:0)
标签大小实际上不是输入的函数,因此应由用户设置。请注意,nonce不是这种情况,在我看来,这使得CCM有点麻烦。
我已经检查了Bouncy Castle库,他们使用用户输入来确定MAC大小(尽管它们将简单地除以8来获取字节)。如果没有给出大小,那么它们将使用算法块大小的一半(当然,对于AES,默认为8个字节),这是合理的默认值。