PCMag编辑选择和审查产品独立.如果您通过附属链接购买,我们可能会赚取佣金,这有助于支持我们的测试。

如何创建一个强大的密码生成器

你相信由第三方软件创建的密码是真正随机和安全的吗?没有?下面是如何为不可破解的密码构建自己的随机生成器。

通过尼尔·鲁本金

我的经验

当IBM个人电脑刚刚推出时,我在旧金山个人电脑用户组担任了三年的总统。这就是我如何认识PCMag的编辑团队的,他们在1986年把我带进了公司。在那次决定命运的会议之后的几年里,我已经成为PCMag在安全、隐私和身份保护方面的专家,使用过反病毒工具、安全套件和各种安全软件。

阅读个人简介
(插图:René Ramos)

你知道该怎么做。不要使用简单的密码,比如你的生日或宠物鬣蜥的名字。不要到处使用相同的密码。为每个网站设置一个长、随机、唯一的密码。在没有帮助的情况下不要尝试这个方法密码管理器.一旦你把所有的密码都安全地存放在管理器中,就用没人能猜到的、甚至连你自己都记不住的独特密码替换掉那些弱密码或假密码。黑客可能会猜简单的密码比如菲多,或者用蛮力破解,但没人能猜出P5$e?强行执行的话,时间是不可能长的。

问题是你在哪里得到那些随机密码?几乎每个密码管理器都有自己的随机密码生成器,其中一些比其他的好。不过,在大多数情况下,程序使用所谓的a伪随机算法。从理论上讲,一个了解算法并可以访问您生成的一个密码的黑客可以复制所有后续生成的密码(尽管这很困难)。如果你足够偏执,你可能想要创建自己的随机密码生成器。我们可以帮你建造,用Microsoft Excel

不可否认,一些安全任务超出了自己动手的范围。你不太可能建立自己的全球网络VPN比如服务器。您不会拼凑出一个手工制作的防病毒实用程序。但构建这个小项目并不需要高级知识,只需要遵循指示的能力。它不使用宏或花哨的东西,只是普通的Excel函数,尽管有些你以前可能没有见过。注意,这个项目必须依赖Excel的伪随机算法。不同之处在于,坏人可以研究任何公开的密码管理器中嵌入的密码生成器,而他们无法访问您的自制密码管理器。

一个警告。你需要一个当前的Excel版本使这个项目工作。Office 2019或更高版本将完成这项工作,最新的Office 365也是如此。如果您不确定,微软会解释如何进行获取最新版本(在新窗口打开)


创建密码生成器脚手架

首先,让我们创建一个脚手架,它将框架密码生成器,也就是标签和静态组件。请按照我下面描述的那样把东西准确地放在单元格中,这样公式就可以使用了。一旦你有了它,你可以调整它,使它完全属于你自己。

密码生成器图1

在单元格B1中,输入“随机密码生成器”,或任何您希望项目的标题。从单元格B3开始向下,输入标签“长度”、“大写字母”、“小写字母”、“数字”和“特殊字符”。跳过单元格B8,在B9中输入“Press F9 to Regenerate”,在B10中输入“PASSWORD”。它应该像上图所示。

在单元格C3中,输入20或首选的默认密码长度。在下面的四个单元格中输入“Yes”。现在在单元格D4中输入整个大写字母,在单元格D5中输入整个小写字母。在D6中输入10位数字,在D7中输入任何您想使用的特殊字符。专业提示:将0放在数字列表的最后,而不是前面,否则Excel会删除它。完成的脚手架应该是这样的:

密码生成器图2

添加生成密码的公式

脚手架就位后,是时候添加公式了。首先,我们需要构建一个文本字符串,其中包括我们选择使用的所有字符。这个公式看起来有点复杂,但实际上,它很长。在单元格D8中输入以下公式:

=如果(D4 C4 = " Yes ", " ")如果(D5 C5 = " Yes ", " ")如果(D6 C6 = " Yes ", " ")如果(C7 = " Yes ", D7, " ")

&操作符将文本字符串粘合在一起。这个公式说的是,对于四个字符集中的每一个,如果相邻的单元格包含Yes,则包含字符集。但是,如果该单元格包含除Yes以外的任何内容(无论大写或小写),则不包含它。现在试试吧;将一些Yes细胞变为No或Nay或Meh。可用字符的字符串将更改以匹配您所做的操作。


使用一些Excel魔术

当我第一次创建这个电子表格时,我使用了一种简单的技术来创建一个随机密码。我从一个公式开始,返回一个从单元格D8中的字符串中抽取的随机字符:

=中期(D8 RANDBETWEEN (LEN (D8)), 1)

这告诉Excel生成一个从1到字符串长度的随机数,并在该位置返回一个字符。我把这个公式的40个重复组合在一起,形成了一个由40个随机字符组成的字符串。然后我使用LEFT()函数将结果切成所需的长度。它并不漂亮。最终的公式有1329个字符!

个人电脑的标志记住超级安全密码的简单技巧

多亏了我从那时起学会的Excel小魔法,我现在生成随机密码的公式要小得多,只有78个字符:

= TEXTJOIN(“”,真的,中期(D8, RANDBETWEEN(标志(行(间接(1:c3))), LEN (D8)), 1))

如果你只是想利用这个公式,而不担心它是如何工作的,没问题!将其复制到单元格C10中。你会看到一个随机的密码,当你按下F9重新计算时,密码就会改变,就像变魔术一样。


学习Excel魔法

你说那是什么?你想知道为什么这个疯狂的公式有效吗?我可以帮你。但首先,我要坦白。我不知道这是不是最好的做我做过的事我只是修修补补,直到把它修好。也许有一个更优雅的解决方案。

首先,请满足TEXTJOIN()函数。这个鲜为人知的gem接受一个值数组作为输入并组合它们。它是最近才添加的,至少需要Office 2019或微软365。在数组之前还有两个输入,一个分隔符用于分隔值,一个true/false选项用于告诉数组是否忽略空值。试一试。在新工作表中,在a列第1行到第5行中键入一些名称。在单元格B1中输入这个公式:

= textjoin ("***", true, a1: a5)

单元格B1将从A1到A5的名称显示为单个文本字符串,每个字符串之间有三个星号。这是另一个例子。

=TEXTJOIN(" and ",TRUE,ROW(A1:A9))

在将这个函数复制到工作表之前,您能猜到它是做什么的吗?A1:A9是一个数组,ROW()函数返回一个结果数组,从1到9的数字。TEXTJOIN将它们粘在一起,中间有“和”。您可以使用此技术以其他方式处理数字列表。

密码生成器图3

不过,我们不需要一串数字。我们只需要Excel拉出一个随机字符一定次数。再一次,这个公式提出了一个随机字符:

=中期(D8 RANDBETWEEN (LEN (D8)), 1)

为了让Excel处理该函数八次,我们需要将定义随机范围低端的数字1替换为返回8个1的数组的公式。SIGN()函数对于任何正数都返回1,因此我们将使用它将升序数字数组更改为1数组。然后使用TEXTJOIN()来组合结果。这个公式返回一个8个字符的密码,由D8中找到的字符串中的随机字符组成:

= TEXTJOIN(“”,真的,中期(D8, RANDBETWEEN(标志(行(1:8)),LEN (D8)), 1))

差不多了!我们需要的不是1:8的范围,而是一个从1到C3中的任意值的范围,即所需的长度。方便的INDIRECT()函数可以完成这项工作。它接受一个描述单元格或位置的文本字符串,并返回该单元格或位置。这样,公式就完成了。再来一遍:

= TEXTJOIN(“”,真的,中期(D8, RANDBETWEEN(标志(行(间接(1:c3))), LEN (D8)), 1))


微调密码生成器

密码生成器在这一点上完全有效。如果你对它满意,很好:你已经做到了!但如果你感兴趣,你可以通过几种方式改善它的外观和功能。对于初学者,右键单击D列顶部的D,并从菜单中选择Hide。现在你不必看到字符集列表和中间的计算。

通常,您希望设置密码生成器中长度的上限和下限。此外,如果在Length字段中输入数字以外的任何内容,则公式将失败。我们可以解决。单击定义长度的单元格C3,单击功能区中的数据,单击打开数据工具,然后选择数据验证。

密码生成器图4

在弹出的结果中,单击允许下拉框并选择整数。取消选中忽略空白框,并将最小值设置为8,最大值设置为64。当它看起来像这里的截图时,单击下一个选项卡,输入消息。作为输入消息,键入“从8到64输入一个长度”。将该文本复制到剪贴板,并将其放入Error Alert选项卡的错误消息字段,然后单击OK。现在,当您单击Length单元格时,会提示您输入一个有效的长度,如果您犯了错误,则会得到一条信息丰富的错误消息。

准备好做最后的调整了吗?单击单元格C4,即标签“大写字母”右侧的单元格。再次单击功能区中的数据并选择数据验证。在下拉菜单中选择“列表”,取消勾选“忽略空白”,在“源”框中单击,输入不带引号的“是,否”。在“输入消息”选项卡上,取消选中顶部的“显示输入消息”框。在“错误警报”页面,输入“Yes or No”作为错误信息。单击OK完成。将此单元格复制到它下面的三个单元格中。

就是这样!现在这四个单元格只接受Yes或No作为值。更棒的是,现在每个都有一个下拉列表,让您从这些值中选择一个。

在这一点上,您可能想要更有创意,并添加格式,使您的密码生成器看起来不那么工业。选择你喜欢的字体,添加颜色,调整东西,直到它看起来很棒。

密码生成器图5

最后,让我们锁定它,这样就不会因为在错误的单元格中输入数据而意外地破坏公式。突出显示单元格C3到C7(这是长度单元格加上四个yes/no单元格),右键单击,并选择Format cells。单击“保护”选项卡,取消选中名为“锁定”的复选框,然后单击“确定”。单击功能区中的“审查”,然后单击“保护表”。只需单击OK接受结果对话框中的设置;你并不是想用密码保护床单,只是为了防止手指乱摸。拯救光荣的结果!


在谷歌表中创建密码生成器

我是一个Excel能手,我以前一直都是谷歌表存在。也许在谷歌存在之前就有了!但我知道许多人发誓谷歌床单,所以我启动它,以确保它支持这个项目。

我按照自己的指示在Sheets中构建了密码生成器,发现一切都很顺利,直到显示一个随机字符的公式。一切正常,但按F9无法刷新一个新的随机字符。咨询谷歌,我发现强制刷新你必须按F5,从而更新整个页面,或改变任何单元格的值。这很尴尬,但是可行。我把提示改为“按F5重生”。

在复制创建密码的重要函数时,我确实遇到了另一个不同之处。但是没有成功。它只是返回一个随机字符。为了让Sheets处理涉及的数组计算,我必须显式地将现有公式传递给ArrayFormula()函数。在Sheets中,生成随机密码的公式变成:

= ArrayFormula (TEXTJOIN(" ",真的,中期(D8, RANDBETWEEN(标志(行(间接(1:c3))), LEN (D8)), 1)))

密码生成器图6

在这里我不会详细介绍,但我设法重新创建了数据验证规则并隐藏了不需要的列。如果你使用的是Sheets而不是Excel,这个项目仍然适合你。


你做到了!

无论您是接受这个电子表格的基本版本,还是继续应用花哨的调整,现在您都有了自己编写的密码生成器。没错,Excel确实使用了伪随机数生成器,但你可以通过掷骰子并在接受生成的密码之前多次按F9来添加自己的随机性。虽然黑客可能会对数百万人使用的密码管理产品中的密码生成器进行逆向工程,但您的一次性实用程序却不会出现在雷达上。你做到了!

SecurityWatch<\/strong> newsletter for our top privacy and security stories delivered right to your inbox.","first_published_at":"2021-09-30T21:22:09.000000Z","published_at":"2022-03-24T14:57:33.000000Z","last_published_at":"2022-03-24T14:57:28.000000Z","created_at":null,"updated_at":"2022-03-24T14:57:33.000000Z"})" x-show="showEmailSignUp()" class="rounded bg-gray-lightest text-center md:px-32 md:py-8 p-4 mt-8 container-xs">

喜欢你正在读的东西?

报名参加SecurityWatch关于我们的顶级隐私和安全故事的时事通讯,直接发送到您的收件箱。

本通讯可能包含广告、交易或附属链接。订阅通讯即表示您同意我们的服务使用条款而且隐私政策.你可以随时退订时事通讯。beplay体育苹果下载


感谢您的报名!

您的订阅已确认。留意你的收件箱!

注册其他时事通讯beplay体育苹果下载

你会喜欢的PCMag故事

关于尼尔·鲁本金

安全首席分析师

当IBM个人电脑刚刚推出时,我在旧金山个人电脑用户组担任了三年的总统。这就是我如何认识PCMag的编辑团队的,他们在1986年把我带进了公司。在那次决定命运的会议之后的几年里,我已经成为PCMag在安全、隐私和身份保护方面的专家,使用过反病毒工具、安全套件和各种安全软件。

在我现在的安全工作之前,我在“用户对用户”和“问尼尔”专栏中为PCMag的读者提供了使用流行应用程序、操作系统和编程语言的技巧和解决方案,这两个专栏从1990年开始,持续了近20年。在此期间,我写了40多篇实用工具文章,以及《Delphi Programming for Dummies》和其他6本涉及DOS、Windows和编程的书籍。我还评论了数千种不同类型的产品,从早期的Sierra Online冒险游戏到AOL的前身Q-Link。

在21世纪初,我将工作重点转向了安全性和不断增长的反病毒行业。在从事反病毒工作多年后,我在安全行业中被认为是评估反病毒工具的专家。我是反恶意软件测试标准组织(AMTSO)的顾问委员会成员,AMTSO是一个致力于协调和改进反恶意软件解决方案测试的国际非营利组织。

读尼尔·J。个人简介

请阅读Neil J. Rubenking的最新报道

Baidu
map