首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是PBEWithMD5AndDes?

什么是PBEWithMD5AndDes?
EN

Stack Overflow用户
提问于 2019-01-11 17:11:04
回答 3查看 13.5K关注 0票数 8

我正在学习Java中的加密算法,偶然发现了这个算法:

代码语言:javascript
复制
  SecretKey key = SecretKeyFactory.getInstance(
                    "PBEWithMD5AndDES").generateSecret(keySpec);

我知道它代表基于MD5和DES算法的密码加密。我知道MD5和DES是两个不同的算法加密密钥,但是PBEWithMD5AndDes作为一个算法到底意味着什么呢?

关于这个“算法”,网上没有太多的资源可以做很好的解释。

我希望有人能简单而简短地解释一下这与普通的MD5或普通的DES算法有什么不同。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-01-11 18:00:33

扩展前面的答案

PBEWithMD5AndDes作为一种算法到底意味着什么?

PBE使用的是由密码、随机盐和迭代次数生成的加密密钥,请参阅KeySpec参数。

代码语言:javascript
复制
KeySpec pbeSpec = new PBEKeySpec(password.toCharArray(), psswdSalt, PBKDF_INTERATIONS, SYMMETRIC_KEY_LENGTH)

这个想法是-密码往往很短,不够随机,所以它们很容易被猜到。使用迭代次数应该会使猜测变得更加困难。

PBEWithMD5AndDes使用MD5和DES生成密钥,请参阅example code。现实中的实现应该使用更多的迭代次数

这与只使用MD5或只使用DES有什么不同?这就是我想知道的。

理论上,你可以使用纯MD5或DES,但今天的计算机可以非常快地猜出密码。

请注意DES和MD5现在已经过时了。在商用硬件上,MD5冲突可以在一分钟内被发现,而DES使用的是64位密钥,这在今天被认为是安全的。

票数 9
EN

Stack Overflow用户

发布于 2019-07-09 23:54:43

Java加密基础结构中的PBEWithMD5AndDES是在https://docs.oracle.com/javase/9/docs/specs/security/standard-names.html#cipher-algorithm-names中描述的算法。该算法是在PKCS#5 (https://www.rfc-editor.org/rfc/rfc2898#section-6.1.1)中描述的算法。

基本上,在第一步中,算法将密码转换为密钥。这称为密钥派生,并使用MD5作为“加扰”函数。输出提供适用于CBC模式下DES的IV和密钥,在第二步中使用它们进行加密。

该算法不再安全,主要是因为DES只使用56位密钥,对于现代攻击(例如https://crack.sh/)来说太短了。尽管MD5容易发生冲突,但这在这里实际上可能不是问题(冲突只会给出给定密钥的替代密码,但密钥不会被传递)。

票数 3
EN

Stack Overflow用户

发布于 2019-01-11 17:15:01

PBE代表"Password Based Encryption",这是一种从密码(文本)导出加密密钥(二进制数据)的方法。

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

https://stackoverflow.com/questions/54143361

复制
相关文章

相似问题

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