使用另一种算法加密已经加密的数据安全吗?
例如,我使用"PBKDF2WithHmacSHA1“加密了密码。
现在,我想使用"SHA512“对其进行进一步加密(因为它被认为比”SHA1“更好)
这会削弱我的加密能力吗?
此外,我是否应该反转加密的密码以增加安全性?
即使"PBKDF2WithHmacSHA1“就足够了,我也希望有额外的保护层。这就是为什么我一直在考虑多重加密。不过,我目前不打算使用第三方选项,如BouncyCastle .
如果您是特定于Java的,这将是有帮助的。
谢谢!
发布于 2014-10-10 13:40:43
所以一些事情..。
1:“用另一种算法加密已经加密的数据安全吗?”
回答:是。解密需要两种算法,攻击者可能都不知道这两种算法(或按什么顺序等),因此是安全的。它不会损坏你的数据。
他说:“我用”PBKDF2WithHmacSHA1“加密了一个密码。”
评论:错了。你什么都没加密。您所做的是散列您的密码。关键的区别在于散列是任意长度数据的固定长度表示。这意味着"hello“的散列将与”这是一个更长的短语“的长度(但内容不同)完全相同(这假设您对两者使用相同的算法,这就是您的算法)。假设哈希算法设计正确,不可能反向工程并将原始数据返回。另一方面,加密接收任意长度的数据,并输出类似长度的“随机”数据。使用加密的,可以将原始数据带回。
所以,要明确的是,你是在散列,而不是加密。这将是一个重要的区别,在一个时刻。
他说:现在我想使用"SHA512“(因为它被认为比”SHA1“更好)对它进行进一步加密,这会以任何方式削弱我的加密吗?
回答:正如已经说过的那样,是在散列,而不是加密密码。这意味着,一旦您的PBKDF2WithHmacSHA1算法完成,您将有一个包含2^160种可能组合的字符串(源:PBKDF2WithHmacSHA512 Vs. PBKDF2WithHmacSHA1)。这意味着您已经创建了一组有限的(尽管不可否认是很大)可能的值,然后可以输入到PBKDF2WithHmacSHA512中,或者简单的SHA512 (不管哪种)。
这是最重要的部分。请记住,散列提供了一个代表数据的字符串。由于您已经生成了一个结果空间为2^160个可能条目的散列,所以通过更强大的散列算法运行不会显着地提高安全性。
4:“我目前不打算使用第三方选项,如BouncyCastle。”
评论:,我不太清楚你这么说是什么意思,但我会给你一个警告。加密的最大规则之一是:不要自己做。不要写你自己的算法。甚至不要自己编写标准算法的实现(例如,作为学术练习或其他什么的除外)。相反,使用已知的正确设计和功能的库(包括JAVA或第三方)。
他说:其他的一切:额外的保护层是一件好事。逆转密码是您可以做的事情之一;另一种流行的(并且广泛使用的)方法是引入SALT。这只是您在函数中使用的一个单词或短语(通常是存储的明文)。例如,如果您正在哈希"hello",您可以使用一个盐,如"helloSALT","ShelloALT","helSAloLT“等,这只是额外的数据引入预哈希数据,使其更加复杂。理想情况下,只有你的程序知道盐是如何被使用的,所以破解密码要困难得多。编辑:,如英仙座指出的,每个密码的盐是不同的.你也可以引进胡椒(是的,盐和胡椒),这基本上是一样的,只是胡椒在整个程序中是不变的。
不过!
如今计算机的速度如此之快,最大的问题就是计算时间。特别是它有多小。可以非常快地生成一个SHA1,甚至一个SHA512哈希,这允许计算机每秒生成数百万这样的哈希,这使它们在强行强制您的密码方面取得了一定的成功(这是一件坏事)。所以,理想情况下,您想要的是一种生成“长”时间的算法(我的意思是“长”,我的意思是按人类标准来说,可能是1- 10ms....still非常快,但以计算机标准来说非常慢)。例如,如果您的散列花费了10 of来生成,那么您只能计算每百万second....not中的100个。
输入BCrypt。和SHA512一样,这是一种散列算法。(它也是文件加密实用程序的名称,请不要混淆两者)。BCrypt是一种自适应算法。它的设计使您可以使哈希更复杂,因为计算机变得更强大。与其详细介绍,我只需将您重定向到这个在线bcrypt生成器:https://www.dailycred.com/blog/12/bcrypt-calculator
作为参考,选择了4次迭代,哈希几乎立即生成,但是当选择了12次迭代时,哈希生成时间大约为2整秒--生成一个密码花费了很长的时间。演示只增加到12,但bcrypt支持31。(这个数字是根据网站,这个数字可能是任意的,并意味着其他的东西。关键是,使用bcrypt,您可以配置它以更长的时间生成哈希--攻击者不仅需要更多的时间来生成哈希,而且还需要知道target...which的重复次数是另一层安全性)。
https://stackoverflow.com/questions/26299639
复制相似问题