34

你如何生成密码?

  • 随机字符?
  • 密码?
  • 高ASCII?

像这样的东西?

cat /dev/urandom | strings
4

43 回答 43

96

Mac OS X 的“钥匙串访问”应用程序让您可以访问漂亮的 OS X 密码生成器。点击 command-N 并单击钥匙图标。您可以选择密码样式(可记忆、数字、字母数字、随机、FIPS-181)并选择长度。它还会警告您有关弱密码的信息。

于 2008-09-19T14:23:52.563 回答
25

使用这个并重击:)

cat /dev/urandom | tr -dc 'a-zA-Z0-9-!@#$%^&*()_+~' | fold -w 10 | head -n 1

更改人数以生成密码数量。

于 2012-10-30T07:48:37.960 回答
12

用于生成密码的简短 python 脚本,最初来自 python 食谱。

#!/usr/bin/env python

from random import choice
import getopt
import string
import sys

def GenPasswd():
    chars = string.letters + string.digits
    for i in range(8):
        newpasswd = newpasswd + choice(chars)
    return newpasswd

def GenPasswd2(length=8, chars=string.letters + string.digits):
    return ''.join([choice(chars) for i in range(length)])

class Options(object):
    pass

def main(argv):
    (optionList,args) = getopt.getopt(argv[1:],"r:l:",["repeat=","length="])

    options = Options()
    options.repeat = 1
    options.length = 8
    for (key,value) in optionList:
        if key == "-r" or key == "--repeat":
            options.repeat = int(value)
        elif key == "-l" or key == "--length":
            options.length = int(value)

    for i in xrange(options.repeat):
        print GenPasswd2(options.length)

if __name__ == "__main__":
    sys.exit(main(sys.argv))
于 2008-09-19T12:15:07.303 回答
8

开源的Keepass工具具有一些出色的密码生成功能,包括增强的随机化。

于 2008-09-19T12:19:17.540 回答
6

我使用密码保险箱来生成和存储我所有的密码,这样您就不必记住超强密码(除了可以解锁您的保险箱的密码)。

于 2008-09-19T12:47:56.257 回答
6

您的建议略有不同:

head -c 32 /dev/random | base64

或者,您可以修剪尾随=并使用echo来获取换行符:

echo $(head -c 32 /dev/random | base64 | head -c 32)

这为您提供了更可预测的输出长度密码,同时仍确保仅可打印字符。

于 2012-11-20T12:59:21.950 回答
4

apg中的算法非常酷。但我主要使用我自己定义的列表中的随机字符。它主要是数字、大小写字母和一些标点符号。我已经消除了容易被误认为是“1”、“l”、“I”、“O”、“0”等其他字符的字符。

于 2008-09-19T12:15:16.757 回答
4

我不喜欢随机字符密码。它们很难记住。

通常,我的密码根据信息对我的重要性分为几层。

我最安全的密码倾向于使用旧的 BBS 随机生成密码的组合,我太年轻太笨了,不知道如何更改和记住。将其中的一些与自由使用的 shift 键一起添加效果很好。如果我不使用那些,我会发现密码短语更好。也许是我喜欢的某本书中的一句话,再次用一些混合大小写和特殊符号表示。通常我会使用超过 1 个短语,或者一个短语中的几个单词,与另一个短语中的几个单词连接。

在低优先级网站上,我的密码很短,通常是几个熟悉的令牌的组合。

我最大的问题是工作,我们需要每 30 天更改一次密码,并且不能重复密码。我只是像其他人一样,想出一个密码并在末尾附加一个不断增加的索引。像这样的密码规则是荒谬的。

于 2008-09-19T12:21:05.510 回答
4

对于网站,我使用SuperGenPass,它使用哈希函数(基于 MD5)从主密码和域名中派生出特定于站点的密码。无需将该密码存储在任何地方(SuperGenPass 本身就是一个小书签,完全是客户端),只需记住您的主密码即可。

于 2008-09-19T12:29:24.583 回答
4

我认为这在很大程度上取决于您要使用密码的目的以及数据的敏感程度。如果我们需要为客户生成一个稍微安全的密码,我们通常会使用一个易于记忆的句子,并使用每个单词的第一个字母并添加一个数字。类似于“在 stackoverflow 上使用的最高机密密码”=>“tspfuos8”。

然而,大多数时候,我使用 Linux 上的“pwgen”实用程序来创建密码,您可以指定复杂性和长度,因此它非常灵活。

于 2008-09-19T13:13:19.707 回答
4

称为 pwgen 的标准 UNIX 实用程序。几乎可以在任何 Unix 发行版中使用。

于 2008-09-19T14:02:05.593 回答
3

我使用KeePass生成复杂的密码。

于 2008-09-19T12:15:39.203 回答
3

我使用https://www.grc.com/passwords.htm为 WPA 密钥之类的东西生成长密码字符串。如果您必须实现某种注册站点,您也可以使用它(通过屏幕截图)创建用于身份验证密码哈希的盐。

于 2008-09-19T12:25:25.047 回答
3

在某些情况下,我使用 Perl 的 Crypt::PassGen 模块,它使用马尔可夫链分析词库(例如 /usr/share/dict/words 在任何合理的 Unix 系统上)。这允许它生成密码,这些密码被证明是合理发音的,因此可以记住。

也就是说,在 $work 中,我们正在转向硬件质询/响应令牌机制。

于 2008-09-19T12:41:31.980 回答
3

选择一个您喜欢的强主密码,然后使用 cryptohash(masterpasword+sitename) 为每个站点生成一个密码。如果站点 B 的密码落入坏人之手(例如由于恶意管理员、wlan 嗅探或站点泄露),您不会丢失站点 A 的密码,但您只需要记住一个密码。

于 2008-09-19T13:09:50.603 回答
2

我最近使用了一种不寻常的方法来生成密码。它们不需要非常强大,而且随机密码太难记住了。我的应用程序有一个巨大的北美城市表。为了生成密码,我生成了一个随机数,抓取了一个随机城市,然后添加了另一个随机数。

波士顿9934

数字的长度是随机的(就像它们是附加的、前置的或两者兼而有之),因此蛮力并不容易。

于 2008-09-19T12:45:32.267 回答
2

嗯,我的技巧是使用我最喜欢的歌曲的首字母。举个例子:每晚在我的梦里,我看到你,我感觉到你……

给我吗:

恩尼迪化

...以及一些插入数字,例如 i=1、o=0 等...

en1md1sy1fy

……大写?永远重视自己:)

最后的密码是...

en1Md1sy1fy

于 2008-09-19T13:27:33.367 回答
2

Joel Spolsky写了一篇短文:密码管理终于成为可能

…终于有一种管理所有密码的好方法了。无论您经常使用多少台计算机,该系统都能正常工作;它适用于 Mac、Windows 和 Linux;它是安全的;它不会将您的密码暴露给任何互联网站点(无论您是否信任它);它为每个站点生成高度安全的随机密码,一旦设置完毕,它就相当容易使用,它会在线维护您的密码文件的自动备份,而且它是免费的。

他建议使用DropBoxPasswordSafePassword Gorilla

于 2008-09-19T14:18:55.053 回答
2

密码:

$ gpg --gen-random 1 20 | gpg --enarmor | sed -n 5p

密码:

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

于 2008-09-19T15:11:55.613 回答
2

大多数情况下,我键入dd if=/dev/urandom bs=6 count=1 | mimencode并将结果保存在密码保险箱中。

于 2008-11-14T11:59:05.270 回答
2
import random

length = 12
charset = "abcdefghijklmnopqrstuvwxyz0123456789"

password = ""
for i in range(0, length):
    token += random.choice(charset)

print password
于 2009-01-11T01:14:53.260 回答
2

在这里阅读并尝试了一些很棒的答案后,我仍在寻找一种易于调整并使用非常常见的 Linux 实用程序和资源的生成技术。

我真的很喜欢这个gpg --gen-random答案,但感觉有点笨拙?

经过进一步搜索,我找到了这颗宝石

echo $(</dev/urandom tr -dc A-Za-z0-9 | head -c8)
于 2010-12-09T08:55:32.243 回答
1

在 Mac 上,我使用RPG

于 2008-09-19T12:17:36.250 回答
1

在 PHP 中,通过从 ASCII 表中生成随机字符串。请参阅生成(伪)随机字母数字字符串

于 2008-09-19T12:18:00.603 回答
1

我从外语句子的首字母开始,并有一些大写的约定。然后,我在句子的特定部分插入源自应用程序或网站名称的数字和符号的组合。

这个方案为每个应用程序生成一个唯一的密码,我每次都可以在我的脑海中毫无困难地重新导出(所以没有记忆),并且它的任何部分出现在字典中的可能性为零。

于 2008-09-19T12:21:05.417 回答
1

您将不得不编写额外的规则来检查您的密码对于您正在编写的系统是否可以接受。一些系统有诸如“最少两个数字和两个大写字母”之类的策略。当您逐个字符生成密码时,请根据需要保留数字/字母/大写的计数,并将密码生成包装在 do..while 将重复密码生成直到 (digitCount>1 && alphaCount>4 && upperCount >1),或其他。

于 2008-09-19T12:25:37.370 回答
1

密码猴子,iGoogle 小部件!

于 2008-09-19T12:43:29.933 回答
1

Firefox-addon Password Hasher 非常适合生成密码:Password Hasher

该网站还提供了一个在线替代插件: 在线密码哈希

于 2008-09-19T13:19:54.883 回答
1

我使用 Perl 程序生成随机可打印的 ASCII 字符,然后在有额外规则帮助我生成更“安全”的密码时调整脚本。我可以将密码保存在便利贴上,然后在一两天后将其销毁;我的手指会记住它,我的密码将完全无法猜测。

这是我的主要登录密码,我每天都使用它,事实上,当我坐下来解锁屏幕时,我每天都会使用很多次。这样便于快速记忆。显然,其他情况下的密码必须使用不同的机制。

于 2008-09-19T13:26:41.280 回答
0

我使用Crypt::GeneratePassword模块。

于 2008-09-19T13:35:23.270 回答
0

对于网站来说,它是一个“秘密”词,结合了我注册的网站的一些令人难忘的东西。

对于其他一切,我使用随机生成的密码。

于 2008-09-19T13:51:56.307 回答
0

我手动生成了非常难记的符号、数字和大小写字母字符串,它们通常看起来像leetspeak

例子:

&p0pul4rw3b$ite!

然后我将它们存储为电子邮件草稿,我可以通过网络邮件从任何地方访问。

于 2008-09-19T14:24:48.770 回答
0

Jeff Atwood建议我们都改用密码短语而不是密码:

于 2008-09-19T14:36:05.777 回答
0

makepasswd使用 Linux 的 /dev/random 功能生成真正的随机密码,强调安全性而不是发音。它还可以加密在命令行上给出的明文密码。

最值得注意的选项是

--crypt-md5 使用 MD5 摘要算法生成加密密码
--string STRING 使用 STRING 中的字符生成随机密码

前者可用于自动生成/etc/passwd、/etc/cvspasswd 等条目。后者可用于在密码中添加标点字符(默认情况下,生成的密码仅包含字母数字字符)。

makepasswd 最初是 mkircconf 程序的一部分,用于集中管理 Linux Internet Support Cooperative IRC 网络。

于 2008-09-19T15:00:36.920 回答
0

如果您想生成用户更容易记住的密码,请查看马尔可夫链。http://en.wikipedia.org/wiki/Markov_chain

该算法可以产生可以发音的无意义单词,因此它们也变得更容易记住和通过电话传递。一点 Google-fu 可以为您提供几乎任何语言的代码示例。

您还需要获得一个好的字典来过滤掉任何作为实际单词出现的密码。

当然,这些不会是高强度密码,但是当您需要对某些东西进行一些基本的访问控制并且您不想让用户承受难以记住的密码的负担时,它们会非常有用。

于 2008-09-19T15:13:50.227 回答
0

我通常使用密码保险箱来生成随机密码。对于我实际上希望能够在没有密码保险箱的情况下记住的密码,我通常使用一个单词和一个数字,然后将字符交错

所以你说一句话。

棒球

和一个数字

24681357

你得到一个密码

b2a4s6e8b1a3l5l7

它看起来很随机,并且可能很难蛮力。而且大多数时候打字也很容易。您只需键入单词,然后将光标移回第二个字符,然后键入数字,然后在每个字符之间按右光标键。这不仅使键入更容易,而且还使键盘记录器更难记录您实际键入的内容。

于 2008-09-19T15:17:04.773 回答
0

这种 Perl 单线有时会有所帮助(rand不安全,但通常没关系):

$ perl -E"say map { chr(33 + rand(126-33)) } 1..31

示例输出:

ET<2:k|D:!z)nBPMv+yitM8x`r.(WwO
于 2009-01-11T01:03:03.297 回答
0

对于相当重要的东西,我喜欢使用字母和数字的组合,比如“xme7UpOK”。这些可以用这个单行生成:

perl -le 'print map { (a..z,A..Z,0..9)[rand 62] } 1..8'

对于不太重要的东西,我喜欢使用易于输入、发音和记忆的密码,例如“loskubov”或“gobdafol”。这些可以像这样生成:

perl -le '@l=("aeiou", "bdfgjklmnprstv");
          print map {(split "",$l[$_])[rand length $l[$_]]} split "", "10110101"'

其中“10110101”是元音和辅音的模式。

于 2010-10-21T21:15:18.427 回答
0
$ echo `cat /etc/dictionaries-common/words | sort --random-sort | head -n 4`
consented upsurges whitewall balderdash

相当低效,但它有效。

于 2011-11-28T15:27:24.413 回答
0

我使用了几个我自己编写的 Perl 脚本,可以在 Github 上找到

gen-password生成密码,例如7bp4ssi02d4i,带有指定长度和字符集的选项。(据我的银行所知,这是我母亲的娘家姓。)

gen-passphrase受此 XKCD 卡通porcine volume smiled insert的启发,使用字典单词生成随机密码,例如。

两者都从默认情况下获取随机数据/dev/urandom,但可以被告知使用/dev/random

我将密码保存在一个加密的数据库中,并且我从不在多个站点上使用相同的密码。我实际上记得很少。

于 2013-01-23T16:15:34.047 回答
-1

从中挑选一个序列

md5 random_file
于 2008-09-19T12:37:26.517 回答
-2
<?php
    print md5(rand(0, 99999));
?>
于 2008-09-19T12:16:56.643 回答