首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否所有流密码(特别是AES-128-CTR )产生的输出大小与输入大小相同?

是否所有流密码(特别是AES-128-CTR )产生的输出大小与输入大小相同?
EN

Cryptography用户
提问于 2015-02-18 14:34:11
回答 1查看 2.5K关注 0票数 3

我特别感兴趣的是知道AES-128-CTR密文的输出是否总是具有与输入明文相同的大小,或者可以以某种方式进行填充。从我使用openssl的测试来看,似乎是这样的。

我的输入(明文)是字节流(不是比特流)。输出密文大小是否有不同的字节流/比特流?

这个输出大小==输入大小是否适用于所有流密码?

EN

回答 1

Cryptography用户

回答已采纳

发布于 2015-02-19 03:23:10

首先,我将从AES-CTR开始。这是一种将分组密码转换为流密码的模式。因为AES有128位的块大小,所以原语的输出以16字节为单位。如果您有一条3字节的消息,则从该块中保留3个字节,以便通过XOR加密明文。损坏的实现可能不会被截断。CTR需要一个Nonce,通常包含在密文中,通常长度为96位(12字节),使最终消息长度为15字节。萨尔萨和ChaCha也需要一个现在。

CTR模式的其他变体包括经过身份验证的GCM,该GCM将以实现定义的长度向密文中添加身份验证标记。

非one和身份验证标记通常是8位的倍数,所以如果您正在加密一个字节字符串,您应该得到一个字节字符串。解密消息所需的其他数据可以连接到密文,例如KDF迭代计数和盐类、密码或KDF标识符以及消息序列标识符。如果使用经过身份验证的模式,并将这些数据作为附加身份验证的数据处理,则需要按照规范对它们进行解密,即使没有它们,您可能仍然能够恢复明文。此外,经过身份验证的数据可能包括一些不属于密文的内容,例如发件人的电子邮件或IP地址。

有些流密码器不显式地需要一个Nonce,但是它们可以作为密钥的一部分进行处理,并且仍然需要包含在密文中。

在加密之前,各种实现可能会混淆或操作明文。明文压缩可以在很大程度上改变密文大小,或者完全没有影响,这取决于内容。混淆可以将整个消息压缩为140个字节,因此可以对其进行明文编码,以填充整个SMS消息,从而隐藏真正的消息大小。

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

https://crypto.stackexchange.com/questions/23999

复制
相关文章

相似问题

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