首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据加密标准

数据加密标准
EN

Stack Overflow用户
提问于 2010-12-07 06:18:44
回答 3查看 1.6K关注 0票数 0

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

  1. DES指定应该有64位纯文本或密码文本以及确切的56位共享密钥。给出字节数的方法是什么,
  2. 该算法使用了大量的位级操作,如将64位分割成两个32位段。这是如何做到的呢?
EN

回答 3

Stack Overflow用户

发布于 2010-12-07 08:20:48

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

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

让我解释一下:

  1. 密码学很难。很少有人知道它足够好发明自己的算法,甚至他们寻求别人的帮助来验证,它是不会在一秒钟内破碎的。
  2. 即使使用一个已经证明对一个人的意图足够好的现有算法,这仍然是一个糟糕的想法,因为有足够多的可能性发生微妙的错误,从而破坏了一个本来安全的算法的实现。这种情况发生了很多次,我都不知道有多少次了。
  3. 即使你真的很幸运,很勤奋,并且完成了一个完美的实现,这也是在浪费时间和资源,而不是使用已经开发、测试和验证过的现有实现。

关于DES,尽管我希望你们知道:对于今天的标准来说,纯DES被认为是很弱的。因此,您应该实现3 3DES哪个更好。

编辑: OK,在说了这么多之后,在意识到这似乎是一项家庭作业之后(谢谢大家的提醒),我对DES进行了一些研究。到目前为止,我得到的是:

DES是一种分组密码,在64位块上工作。有几个不同的操作方式。它们确实决定了如何将明文划分为64位块。有些模式需要填充,这意味着您可以用数据填充最后一个块,在解密密码文本之后可以删除这些数据。上面维基百科文章中的填充段落包含了关于DES中如何使用填充的描述。

关于这个理论,怎么用爪哇.

代码语言:javascript
复制
byte[] bytesOfString = clearTextString.getBytes();

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

我希望这个修正后的答案对你们更有帮助。

票数 2
EN

Stack Overflow用户

发布于 2010-12-07 07:39:03

您不能使用现有的赏金城堡库:http://www.bouncycastle.org/docs/docs1.6/index.html吗?

您将在David的“用Java开始密码”中找到许多使用此库的示例。

票数 1
EN

Stack Overflow用户

发布于 2010-12-14 10:24:59

  1. 您现在应该知道8位=1字节了。密码中的所有内容都是在位上工作的,除了定义缓冲区之外,您从来不需要字节。
  2. 拆分使用按位运算。为下半部遮住顶部的部分,在上半部分移过顶部的位。我假设您已经有了引用,虽然它们是一个非常宝贵的资源,但是您绝对必须知道按位操作是如何工作的。一个不会破坏项目的好资源是压缩算法,比如CABAC,因为它们同样是面向位的。然后关闭选项卡,尝试使用规范来创建自己的选项卡。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4373917

复制
相关文章

相似问题

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