gpt4 book ai didi

java - 数据加密标准

转载 作者:行者123 更新时间:2023-12-02 00:48:03 25 4
gpt4 key购买 nike

我们被要求编写 DES algorithm 的 Java 实现(用于加密和解密)。我有几个问题:

  1. DES 指定应该有 64 位的纯文本或密文以及一个 56 位的共享 key 。给出字节数的方法是什么,

  2. 该算法使用了大量位级操作,例如将 64 位拆分为两个 32 位部分。如何做到这一点?

最佳答案

虽然这并不是你问题的真正答案,但我不得不说:

在大多数情况下,自己实现加密算法是一个非常糟糕的主意。

让我解释一下:

  1. 密码学很难。很少有人能够充分理解它来发明自己的算法,甚至他们寻求其他人的帮助来验证它不会在一秒钟内被破解。

  2. 即使使用已被证明足以满足人们意图的现有算法,这仍然是一个坏主意,因为存在足够多的可能性出现细微错误,从而破坏原本安全的算法的实现。这种事发生过很多次,我都记不清发生过多少次了。

  3. 即使您真的很幸运、勤奋并且实现了完美的实现,但如果不使用已经开发、测试和证明的现有实现,那也是浪费时间和资源。

关于 DES,尽管我希望您知道:对于当今的标准来说,纯 DES 被认为非常薄弱。所以你应该实现更好的3DES。

编辑:好吧,说了这么多,并意识到这似乎是一项家庭作业(感谢您的提醒)后,我深入研究了 DES。这是我到目前为止所得到的:

DES 是一种分组密码,在 64 位 block 上运行。有几种不同的modes of operation 。它们确实确定如何将明文划分为 64 位 block 。某些模式需要 padding ,这意味着您用数据填充最后一个 block ,您可以在解密密文后将其删除。上面维基百科文章中的“填充”段落包含有关如何在 DES 中使用填充的描述。

理论就讲这么多,如何在 Java 中实现这一点......

byte[] bytesOfString = clearTextString.getBytes();

这为您提供了必须加密的字符串的字节数组。剩下的就是简单的计数和加法...

我希望修改后的答案对您更有用。

关于java - 数据加密标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4373917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com