首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >电子码本(ECB)密码链

电子码本(ECB)密码链
EN

Stack Overflow用户
提问于 2012-12-25 05:18:16
回答 2查看 1.7K关注 0票数 0

我需要执行RSA算法使用ECB (电子代码簿)作为学校作业。我知道ECB很糟糕,我不应该在现实生活中使用这种东西,但我在这里没有其他选择(我们最终会将其转换为CBC,然后前进到AES,但目前我需要使用ECB)。

我偶然发现了链接加密块的一个问题:假设我有一个大小为256位的密钥,因此我将每个块大小设置为256位(块大小=密钥大小)。我还确保填充最后一个块,以防它的大小较小。问题是加密块的结果大小不同,所以我不知道如何链接结果,这样当我解密数据时,我就可以确切地知道块何时开始,何时结束。在这种情况下,最常见的做法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-25 06:11:15

RSA使用内部填充,所以您不需要填充输入。PKCS#1.5加密通常可以在两种不同的填充模式下执行: OAEP和OAEP填充。两者都为每个块添加了大量的填充。这不同于例如AES填充,在AES填充中,仅在要加密的最后一个块上执行填充。不同的是,RSA的安全性在很大程度上依赖于填充,因此必须执行填充。

现在,因为每个块都是填充的,显然适合块的纯文本小于密钥大小(模数的大小)。换句话说,块大小小于密钥大小。在PKCS#1.5的情况下,它比键大小小11个字节(如果这至少在一个字节边界上)。保持稍微高一点的块大小(比如最多19个字节)会更好,不过,8个字节的填充应该是(安全的)随机字节。

对于Java,你实际上可以从Cipher对象中询问块的大小,而对于RSA,它会正确地从密钥大小中减去开销。否则你将不得不自己计算它。如上所述,您不需要填充最后一个块,块填充将为您填充最后一个块。

请注意,RSA PKCS#1规范可以免费下载。因此,您可以自己计算(更难的) OAEP填充。对于你的特殊任务,我会保持1.5个填充。

票数 2
EN

Stack Overflow用户

发布于 2012-12-25 05:37:18

欧洲央行是一家block cipher mode of operationRSA是一种公钥加密方案,而不是block cipher,所以“ECB模式下的RSA”并没有什么实际意义。我怀疑在你最初的任务和你在这里的描述之间一定有什么混淆了。

在任何情况下,实际分组密码的输出长度总是恒定的(并且等于输入分组长度)。可能会让您感到困惑的一件事是,加密的输出有时可能包含空字节,因此不能将其视为以空值结尾的字符串。只需将输出视为固定长度的二进制数据块,就可以了。

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

https://stackoverflow.com/questions/14025773

复制
相关文章

相似问题

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