1

嗨,我正在实习,我的公司告诉我,我必须使用 C 语言来实现密码复杂性。密码必须是字母数字(例如 h#ll0)。由于我是 C 新手,我发现了一些困难。我用谷歌搜索“C 中的密码复杂性”,但没有运气。有人可以给我一些示例或解释我如何以编程方式进行操作。

非常感谢提前

凯文

4

3 回答 3

3

一个更好的谷歌术语是“强密码”:

http://en.wikipedia.org/wiki/Password_strength

但是您会发现大多数文章都不是针对 C 语言的,它们可能会建议使用正则表达式。

正如其他人建议的那样,编写自己的低级代码来进行检查可能不会太难。这样可以省去生成对某些要使用的 C 语言正则表达式库的依赖关系的麻烦。但是,使用正则表达式有一个优势,因为这意味着非 C 程序员在以后有更好的机会更新规则,并且它可能使错误不太可能启动。这取决于你的具体情况。

(另外,如果你的 C 代码的其他部分需要正则表达式,那么链接一个可能是你无论如何都需要做的事情,你会“免费”获得它......)

无论如何,这个 StackOverflow 问题有一个 regex.h 教程的链接,将来可能会添加更多:

C - pelucid regex.h 使用教程

于 2011-05-10T03:54:05.797 回答
1

这取决于密码的编码方式,您可能需要 ASCII 字符图表或 Unicode 字符图表。对于输入密码中的每个字符,将其分类为数字、大写字母、小写字母或特殊字符等组。

以下是表格的链接:

http://www.asciitable.com/

http://www.tamasoft.co.jp/en/general-info/unicode.html

于 2011-05-10T03:47:49.007 回答
1

你没有提供足够的信息。通过密码复杂性,我假设您的意思是密码强度。

我不从事为某人编写代码的业务,但是如果您要做的是确定密码是否同时包含字母和数字,是否至少包含n 个字符等,C 具有功能你可以这样做。isalnum()isdigit()isalpha()来进行测试。这些都返回非零值以指示为真。

就速度而言,C 本身就很快,但请记住,无需解析整个密码——您所需要的只是函数在某个时候返回一个非零值。(所有这些函数都按字符解析;C 字符串是 char 数组。)

http://icecube.wisc.edu/~dglo/c_class/charfunc.html这是一个很好的字符解析函数的小参考。

于 2011-05-10T03:50:31.490 回答