问题是:我有一个传输流,它要求我在发射机和接收器之间加密。数据大小最多为8个字节,因此我似乎只能使用欧洲央行,因为我只能使用一个块--如果数据少的话,最多只能使用8字节,而我打算使用随机数据(接收方可以从解密的数据中计算出正确的长度)。
我一直在寻找64位密码,并想出了最流行的: DES,3 DES,TEA,XTEA,XXTEA,Blowfish。我已经打折了DES、3 DES和Blowfish,因为它们的代码大小(没有足够的空间来实现它,以及对我们正在使用的嵌入式平台上的加密/解密速度的担忧)
我不想喝茶,因为从我所读到的情况看,它似乎不安全。
还有比TEA更安全的64位密码吗,但不需要大量的代码空间和大量的常量数据,就像Blowfish那样?
可以使用128位密码并将结果“修剪”到64位吗?
发布于 2015-09-08 23:22:22
如果满足以下所有条件,您可以安全地使用欧洲央行:
即使你不认为你需要真实性或完整性检查,仔细考虑整个系统的设计。如果对手提交假消息(要么是用整块布制作的,要么是对合法消息的修改),会发生什么情况?如果对手在观察到之前的消息后重新提交了它的效果,会发生什么?
如果消息都是由同一个实体产生和接收的,并且发送方和接收方可以就某种消息标识符(例如,每个消息递增的数字)达成一致,那么就会有一个更好的模式:计数器模式(CTR)。CTR有几个优点:
只有当发送方和接收方就每条消息的初始计数器值达成一致时,CTR才能工作。通常,初始计数器值是作为密文的前缀发送的,但是如果您已经有了消息的唯一标识符,则可以重新使用它。
CTR对所有消息的每个块都需要不同的计数器值。对于短于块长度的邮件,此要求简化为不对不同邮件重用计数器值。
请注意,CTR无助于消息完整性。它甚至使得在没有解密的情况下对密文进行可预测的更改变得非常简单(在密文中翻转一点,在明文中翻转相应的位)。
https://crypto.stackexchange.com/questions/20267
复制相似问题