首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Blowfish代替AES的CMAC算法

用Blowfish代替AES的CMAC算法
EN

Stack Overflow用户
提问于 2013-06-22 20:29:51
回答 2查看 669关注 0票数 0

背景

我有一个Lua环境,它有河豚密码(CBC,IV = {00..0})。AES是不可用的,纯Lua实现是慢的方式。

问题

我想根据RFC 4493中指定的基于AES的算法生成一个CMAC。因为我需要这个CMAC在Lua环境和我自己构建的另一个程序之间进行交换,所以我想我只需要将所有的AES加密函数更改为Blowfish函数。

每个CMAC的输入长度为26字节,而在不同的CMAC代之间只有几个字节变化。例如:

代码语言:javascript
复制
AAAAAAAAAAAA BA AACCCCCCCDDDDDDDDDFFFFFFFFFFFFFFFFFFFF
AAAAAAAAAAAA AB AACCCCCCCDDDDDDDDDFFFFFFFFFFFFFFFFFFFF

导致问题的原因是,CMAC的第一部分对于每个输入都是相同的,并且只有最后一部分更改:

代码语言:javascript
复制
0123456789ABCDEF 48534593402BC93D
0123456789ABCDEF DF82BC920DA92383 

这是河豚算法的问题吗?有什么我可以做的(改变CMAC algo),以确保我得到不同的结果,特别是只有小的变化输入?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-23 05:26:09

通过设计,CMAC可以与64位块密码一起使用,如Blowfish。但是输出也将是64位。您不应该更改算法中的任何内容。参考见800-38B.pdf。还请注意,64位MACs的安全性相当低。

票数 1
EN

Stack Overflow用户

发布于 2013-06-23 11:19:07

维基百科关于CMAC的文章对算法进行了解释。

AES是128位分组密码,而Blowfish是64位分组密码.CMAC算法的几个部分取决于块大小。你得重写那些部分。

一般来说,自己实现加密算法并不是一个好主意;许多微妙的事情都可能出错。如果没有可用的加密库,Lua可能不是编写使用加密技术的应用程序的好选择。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17255007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档