|
|
1
4
(很抱歉,我最初误解了需求,认为输入数据需要6个字节。) 我不认为你能用标准密码算法做你想要的事情:
现在,这并不意味着一个48位的分组密码不能被开发出来——事实上,我敢说有一些——只是,经过密码界多年的审查,没有一个BOG标准密码有这样的分组大小。 所以我建议选择:
后一种选择的明显问题是,尽管标准分组密码通常基于通用的一般原则,但它们采用经过相当仔细审查的特定设计决策;您的可能不会。 我还建议您远离这个问题(或者解释更多您正在尝试做的事情),因为它似乎是基于通常会违反良好安全实践的要求(例如,让相同的明文始终加密到相同的密文是我们通常会特别避免的事情)。。这样,您就可以拥有世界上设计最好的feistel密码,但在如何使用它的过程中还引入了其他一些漏洞。 一般不推荐使用[*]三重模式,因为AES更有效地提供了更好的安全性(您可能希望看到一些 comparative timings of block ciphers 我在Java中看到了它有多么糟糕。但是,这在您的特定应用程序中可能并不重要。
|
|
|
2
5
|
|
|
3
2
我相信这就是你要找的
在ctr模式下的块密码与流密码具有相同的问题。
|
|
4
1
如果每个加密都有一个唯一的salt,则只能使用流密码(甚至不要考虑使用相同的salt,因为这样做很容易被破坏)。 当您有这样的唯一值(例如已经与您的值关联的序列号)时,您可以使用例如流密码 RC4-drop . 当你已经没有这样的唯一数字时,你可能不能使用流密码,因为你的结果只有48位(所以没有足够的空间放盐)。 对于48位的分组密码-对不起,我也不知道这样的密码。也许您可以做的是将四个48位值组合成一个192位值,生成三个64位块,对它们进行编码,然后再次将它们拆分为四个48位值。(我不知道,在你的情况下,这是否可能?) |
|
|
5
1
如果您有一个与每个纯文本值相关联的唯一计数器/序列号,那么您只能在ctr(counter)模式下使用任何块密码。 要加密k项下的序列号n的值v:
解密是一样的。用这种方法要记住的最重要的事情是: 永远不要使用相同的密钥和序列号来加密两个不同的值。 序列号必须唯一。如果序列重新启动,则 必须 使用新的密钥。 |
|
|
6
0
2009年设计了一个48位块80位密钥密码-katan48(家庭版的ktantan48有一些密钥调度问题)。到目前为止,它还没有被破坏,而且有相当高的安全边际,所以它已经通过了时间的考验。 |
|
|
xchrisbradley · 使用Zig签名对功能选择器进行编码 2 年前 |
|
|
Shirin Ebadi · 加载公钥字节作为DH密钥 2 年前 |
|
YoavKlein · 为什么jwt.io会给我私钥部分来填充? 2 年前 |
|
|
birb · RFC-6238 TOTP实现与示例不匹配 2 年前 |
|
|
Stefan N · 如何生成N个字符的所有字母数字组合[重复] 3 年前 |
|
|
xdivayze · 在线和离线客户端之间的打包密钥交换 3 年前 |