有没有办法扭转在C的crypt()?(Is there a way to reverse a cry

2019-06-26 11:42发布

不知道这是可能的,但我希望能够用一个字符串开始,然后找出输入必须是到什么crypt为了得到这串出。

或者,也许这是不可能的,这将是反正事情的全部目的?

是的,有在我尝试这种代码的盐。

Answer 1:

按照设计意图, crypt()是一个单向散列。 因为每个人都有说,这意味着,意图是,这将是计算上不可行发现,产生相同的散列明文字符串。

一对夫妇的因素对设计意图的效果。

  1. 计算是便宜很多比它时crypt()的设计。 更糟的是,在该计算得了便宜的速度并没有预期的,所以它现在便宜很多比它想象它可能是。

  2. DES并没有耽误,以及它被认为会。 这可能是在给定的时间知识的公共状态的最佳选择,但是。

  3. 即使计算还没有够便宜做自己的开裂,这是互联网已经做了很多关于你的工作的云。 人们一直在计算和发布彩虹表 ,这使得它能够快捷了很多扭转特定的散列所需的计算的。 ( 杰夫对彩虹表博客文章也 。)盐有助于防止彩虹表(因为你需要的盐的每个可能值的表集),但在经典的实现中使用的盐大小crypt()只有12位的,所以还不如可能希望的那样巨大的块。

更糟糕的是,对于某些高价值的散列函数(如LM哈希 Vista之前发明了旧Microsoft LAN管理密码,但在所有版本的Windows用于短密码)散列值和它们的反几乎完全字典存在。



Answer 2:

如果它是一个古老实现crypt(3)采用DES,那么你几乎可以(但不完全)蛮力它。

在该方案中,输入被截断为8个字符,并且每个字符为7位,这意味着有要搜索不同密码的56比特的空间。

对于单独DES,您可以搜索在约18天的整个空间上$ 10K的FPGA(价值http://en.wikipedia.org/wiki/Data_Encryption_Standard#Brute_force_attack ),所以预计时间为9天。 但我假设你没有$ 10K花的问题。 给它几年,谁知道是否DES饼干会在合理的时间对PC的GPU上运行。

即使这样, crypt(3)传统上涉及到25轮DES的,有轻微的修改基于盐的算法,所以你希望它至少为25倍慢暴力破解。

较新的实现crypt(3)是远远超出蛮力,因为他们是基于更好的哈希算法比旧的基于DES-一个crypt(3)使用。

当然,如果该字符串不是随机的(例如,如果它是一个被一些人选择了一个密码),那么你可以得到比蛮力一个更好的预期时间。



Answer 3:

不,这背后一个单向散列函数的想法,但你可以用谷歌来帮助你在某些情况下。

要回答这个答案评论(谷歌不会帮助,如果有一个盐)我说:是的,没有。 盐增加了解决方案的空间,使一个完整的字典不容易的创建(因为你有计算和存储加密后一个版本为每个可能的两个字母盐每个单词)。 如果您认为互联网是一个巨大的数据库,而谷歌的指数,是谷歌做的是搜索,如果有什么地方加密字符串围在网络发生。 盐的存在降低了,你会发现它的机会,但如果你足够幸运,发生存在,它也与明文一起,那么你的密码。

另请参见这篇文章在Slashdot 。

结论:盐会降低周围寻找网页,真正在那个特定的加密字符串的机会,但谷歌是无所谓盐的任何量,而且还可以帮助在某种程度上,如果你恰巧是幸运的(因为它是对的情况下我给)。



Answer 4:

没有。

隐窝()是一个不可逆的算法(它使用一个单向函数),其通过添加盐来加密值变得更难以蛮力。

每评论编辑。



Answer 5:

不,这是不可能的看看这个网站(假设你正在使用的GNU C库) http://www.gnu.org/s/libc/manual/html_node/crypt.html

该墓穴被腌制的方式将几乎保证你正在试图做的是行不通的。



Answer 6:

这个函数是单向的是世界上每一个口令方案的中坚力量。 如果有人在这里都回答“是的,这里是如何......”,政府将被迫立即删除他们的评论,去烧他们的房子下来,威斯克他们离开一个秘密地点。

总之,没有。



Answer 7:

没了..这是一个单向函数。



文章来源: Is there a way to reverse a crypt() in c?
标签: c hash crypt