网络安全的数学概念:整数分区

网络安全的数学概念:整数分区网络安全专家建议我们为每台设备、网站、应用程序等设置不同的强密码。这是有道理的:如果您的一个密码被泄露,您的其他密码仍然安全。例如,假设您的一个

欢迎大家来到IT世界,在知识的湖畔探索吧!

网络安全的数学概念:整数分区

网络安全专家建议我们为每台设备、网站、应用程序等设置不同的强密码。这是有道理的:如果您的一个密码被泄露,您的其他密码仍然安全。

例如,假设您的一个社交媒体密码被激活成功教程,黑客试图将相同的密码用于您的网上银行。

但幸运的是,您使用一个非常不同的网上银行密码。因此,黑客将用完一次尝试输入无效密码的机会,该密码甚至与您的实际网上银行密码还差得很远。

也许您的计算机操作系统有一个密码,电子邮件有一个密码,社交媒体有另一个密码……加起来需要记住很多密码。

对于我们可能只使用一次或两次的网站,我们真的需要一个强大而独特的密码吗?例如,您明年甚至可能不会参加的年度会议的网站。

然而,其中一些网站要求密码不仅包含大写和小写字母和数字,而且还至少包含一个特殊字符,例如井号或感叹号。

因此,我们中越来越多的人依赖密码生成器,例如 Microsoft Edge 或 Mozilla Firefox 中的密码生成器。密码生成器可以生成一个非常强的密码,然后将其保存,这样你就不必再输入了。

作为练习,尝试使用您最喜欢的编程语言创建一个密码生成器。编写一个函数,接受 9 或 20 之类的整数,并生成具有那么多字符的密码。让我们不要担心这个练习的负参数。

在我第一次进行此练习时,我的解决方案是将所有允许的字符放在一个 中String,伪随机地从中选择字符,然后审核结果以确保每个类别中至少有一个字符。

审计是必要的,因为例如随机选择可能会给出没有小写字母的结果。这些审计并不优雅,所有这些 If 语句都增加了圈复杂度。我不需要点击诱饵文章来告诉我太多 If 语句不好。

然后我想到使用整数分区来消除对这些审计的需要。我敢肯定我不是第一个想到这一点的人。

正数n的整数分区是选择加起来等于n 的正整数的所有可能方式。例如:

7 = 6 + 1 = 5 + 2 = 4 + 3 = 5 + 1 + 1 = 4 + 2 + 1 = 3 + 3 + 1,等等。

按照惯例,分区通常首先列出具有最少部分的分区,并且在每个分区中最大的部分在前,然后是较小的部分按降序排列。但出于我们的目的,我们可能希望顺序也或多或少是随机的,例如,

3 + 1 + 3 = 1 + 1 + 4 + 1 = 7 = 5 + 2 = 3 + 4,等等。

如果理想的密码长度为 14 个字符,并且我们希望生成的密码至少具有来自四个类别中的每个字符的一个字符,那么我们希望将 14 分为四个部分。

因此,编写一个函数,它接受一个数字n(如 14)和多个部分(如 4),并伪随机地选择一个n的分区到指定数量的部分中。然后用它来组装密码。

例如,如果伪随机分区函数给出 7、4、2、1,则中间密码可能是“ACFHHXZdoru35#”(七个大写字母、四个小写字母、两个数字和一个特殊字符),然后将其打乱以给出类似的内容“HC5Xr#AouHdF3Z。”

或者,如果伪随机分区函数给出 1、5、2、6,则中间密码可能是“Mcmu47!@##^”,我让您想象如何将其改组以给出最终结果。

请记住,我们不希望人们记住或输入这些密码。

这是关于计算机为您应该记住的不够重要的事情生成密码。请多多考虑您更重要的密码。

这是实现伪随机分区函数的一种方法的草图

 while (numParts > 1) { int available = n - numParts + 1; int part = random.nextInt(available) + 1; parts.add(part); n -= part; numParts--; } parts.add(n); return parts;

欢迎大家来到IT世界,在知识的湖畔探索吧!

这显示了一个条件,即 While 循环,并且大概在这之前有一个条件来检查这numParts是一个合理的值。但是在密码生成中,我们将能够消除对生成密码中我们想要的四类字符的四次审核。

你能想出更好的方法来实现伪随机分区函数吗?在评论中让我知道。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/67722.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信