首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >密码强度库.目标C

密码强度库.目标C
EN

Stack Overflow用户
提问于 2013-02-18 11:39:13
回答 3查看 3.1K关注 0票数 8

我正在寻找一个开源组件,可以估计一个密码的强度。在网上搜索,我发现这个非常有趣:https://github.com/lowe/zxcvbn (关于它的更多细节:https://tech.dropbox.com/2012/04/zxcvbn-realistic-password-strength-estimation/)。

给我留下深刻印象的是,与相比,对给定密码进行分析的能力--“普通密码、普通美国人姓名和姓氏、普通英语单词以及日期、重复(aaa)、序列和QWERTY模式等常见模式--”

有人知道类似的东西可以用于iOS/Mac应用程序吗?如果不是,什么是最好的开始方式?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-06 08:22:42

所以,最后,一年多后,伟大的马特-汤普森刚刚向GitHub发布了他自己的库,用于验证密码强度、验证规则,并对其强度进行评估。

这里是:https://github.com/mattt/Navajo

票数 11
EN

Stack Overflow用户

发布于 2016-04-07 16:05:51

看看GitHub上名为zxcvbn-ios的开源库,它是为Objective重写的库:

https://github.com/dropbox/zxcvbn-ios

票数 2
EN

Stack Overflow用户

发布于 2013-02-21 01:16:53

除了密码上有实际的英语单词,使其易受字典攻击外,您还可以简单地将其分析为抵抗纯蛮力攻击。

对字典攻击进行安全性检查时,必须使用大的单词列表。我还必须考虑到实际的字典攻击是如何工作的,如何混合字典单词,如果它们做了变体,比如用A换4等等。

把重点放在暴力攻击上,我相信我能帮到你。

对于蛮力攻击,您首先需要做的是定义一个字符集,攻击将用来生成密码。第一次尝试可能会得到很多密码,而且很快就会只使用小写字母。

在只有小写字母(其中大约有25个字母,取决于语言)和密码N个字符,您将有25个力量的N个不同的组合。例如,小写6字母密码有244140625种不同的可能性。

现在,让我们添加大写字母,因此另有25个(总共50个)。在一个6个字母的密码,我们将有50的力量,6组合,15625000000。

加一些数字?所以又有10个角色。

如果您添加一些符号,您可以添加另外20个常见的符号(猜号)。

所以基本上你要做的是分析一个密码并检查它是否有小写字母(可能总是这样),所以你在字符集计数中添加了25。有大写字母吗?另一个25元给伯爵。有号码吗?再给伯爵打10杯。它还有其他的符号吗?再给伯爵打20杯。

使用小写、大写、数字和符号(~80个字符集)的10个字符密码将有大约10737418240000000000个组合。

现在,数一下密码的大小,然后做数学运算。characterSetCount到了nCharacters的力量。

因此,您将得到的数字是攻击者原则上必须检查的组合数,以确保他能够找到正确的密码。您还可以假设攻击者不必检查所有密码才能找到正确的密码。检查其中的一半会给它同样的机会找到它,而不是找到它。所以把一半的组合作为参考。

现在,使用哪种散列算法来存储密码?

让我们假设MD5。对于MD5,我找到了这个http://bvernoux.free.fr/md5/index.php,它的状态是每秒检查2亿散列。

得到你的一半组合数,除以2亿,你得到的秒数,它将需要攻击者获得您的密码与该硬件和方法。例如,我们讨论过的所有类型字符的10个字符密码大约需要26843545600秒。大约425年。

有了这个,你可以分析一个最坏的情况。它不准确,但它可以给你一个估计。

另一项重要的检查是密码哈希是否使用了salt。使用盐类来存储密码( (cryptography)是当今常见的做法。如果您不使用这种方法,那么您很容易受到彩虹表攻击( table )的攻击,在这种情况下,所有这些数学都是无用的,因为您的密码非常不安全,直到计算彩虹表的字符计数非常高(16左右)为止。

希望能帮上忙!

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

https://stackoverflow.com/questions/14935412

复制
相关文章

相似问题

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