我们如何生成密码?
我们如何生成密码?
- 随机字符?
- 密码短语?
- 高ASCII?
像这样吗?
cat /dev/urandom | strings
解决方案
简短的python脚本,用于生成密码,最初是从python Cookbook生成的。
#!/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))
apg中的算法非常酷。但是我通常会使用自己定义的列表中的随机字符。它主要是数字,大小写字母和一些标点符号。我消除了容易被误认为其他字符的字符,例如" 1"," l"," I"," O"," 0"等。
我使用KeePass生成复杂的密码。
<?php print md5(rand(0, 99999)); ?>
在Mac上,我使用RPG。
在PHP中,通过从ASCII表生成随机的字符串。请参见生成(伪)随机字母数字字符串
开源的Keepass工具具有一些出色的密码生成功能,包括增强的随机性。
我从外语句子的开头开始,有一些约定将它们大写。然后,我在句子的特定部分中插入由应用程序或者网站的名称得出的数字和符号的组合。
该方案为每个应用程序生成一个唯一的密码,我每次都可以在脑海中毫无疑问地重新获得密码(因此无需记忆),并且任何部分出现在字典中的可能性都为零。
我不喜欢随机字符密码。他们很难记住。
通常,我的密码根据信息对我的重要性而分为不同的等级。
我最安全的密码倾向于结合使用旧的BBS随机生成的密码,这些密码太小又愚蠢,无法知道如何更改和记忆。将其中一些与自由使用shift键配合使用效果很好。如果我不使用这些密码,我会发现密码短语更好。也许是我喜欢的某本书中的一个短语,再加上一些混合的大小写和特殊符号。通常,我会使用一个以上的词组,或者一个词组中的多个词,再加上另一个词组中的多个词。
在低优先级站点上,我的密码很短,通常是一些熟悉的令牌的组合。
我最大的问题是工作,我们需要每30天更改一次密码,并且不能重复输入密码。我就像其他所有人一样,提供密码并在末尾添加一个不断增加的索引。这样的密码规则是荒谬的。
我使用https://www.grc.com/passwords.htm生成诸如WPA密钥之类的长密码字符串。如果必须实现某种注册站点,也可以使用此方法(通过屏幕抓取)来创建用于身份验证密码哈希的盐。
我们将必须编写额外的规则,以检查密码对于为其编写系统而言是可接受的。某些系统具有"最小两位数和两个大写字母"之类的策略。在逐字符生成密码时,请根据需要保留数字/字母/大写字母的计数,并将密码生成包装在do ..中,同时重复密码生成直到(digitCount> 1 && alphaCount> 4 && upperCount > 1)或者其他任何值。
http://www.wohmart.com/ircd/pub/irc_tools/mkpasswd/mkpasswd+vms.c
http://www.obviex.com/Samples/Password.aspx
https://www.uwo.ca/its/network/security/passwd-suite/sample.c
即使在Excel中!
https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-1032050.html
http://webnet77.com/cgi-bin/helpers/crypthelp.pl
对于网站,我使用SuperGenPass,它使用哈希函数(基于MD5)从主密码和域名派生特定于站点的密码。无需在任何地方存储该密码(SuperGenPass本身就是一个书签,完全是客户端的),只需记住主密码即可。
从中挑选一个序列
md5 random_file
在某些情况下,我使用Perl的Crypt :: PassGen模块,该模块在一组单词集上使用Markov链分析(例如,在任何合理的Unix系统上为/ usr / share / dict / words)。这使它能够生成可以合理发音并因此记住的密码。
就是说,在$ work上,我们正在转向硬件挑战/响应令牌机制。
密码猴子,iGoogle小部件!
我最近使用了一种不寻常的方法来生成密码。它们不需要超级强壮,随机密码也很难记住。我的应用程序在北美有大量的城市。为了生成密码,我生成了一个随机数,抓住了一个randon城市,并添加了另一个随机数。
boston9934
这些数字的长度是随机的(就像它们是添加的,前缀的,或者两者都一样),因此蛮力并不是一件容易的事。
我使用密码保险箱来生成和存储所有密码,这样我们就不必记住超级强密码了(除了用于解锁保险箱的密码之外)。
选择一个自己喜欢的主密码,然后使用cryptohash(masterpasword + sitename)为每个站点生成一个密码。如果站点B的密码使用不当(例如,由于管理员的恶意,wlan嗅探或者站点破坏而导致的错误),我们将不会丢失站点A的密码,但是我们只需要记住一个密码即可。
我认为这很大程度上取决于我们要使用密码的用途以及数据的敏感程度。如果我们需要为客户端生成某种程度安全的密码,则通常使用易于记忆的句子,并使用每个单词的首字母并添加一个数字。类似于"用于stackoverflow的最高机密密码" =>'tspfuos8'。
但是,大多数时候,我使用Linux上的" pwgen"实用程序创建密码,我们可以指定复杂性和长度,因此非常灵活。
Firefox添加密码哈希器非常棒,可以生成密码:密码哈希器
该网站还提供了该插件的在线替代品:
在线密码哈希器
我使用Perl程序生成随机可打印的ASCII字符,然后在有其他规则可帮助我生成更"安全"的密码时调整脚本。我可以将密码保留在便笺上,然后在一两天后销毁。我的手指会记住它,而我的密码将完全无法猜测。
这是我的主要登录密码,是我每天都会使用的密码,实际上是每天坐下来解锁屏幕时使用的密码。这样便于快速记忆。显然,其他情况下的密码必须使用不同的机制。
好吧,我的技术是使用我喜欢的歌曲中单词的首字母。需要一个例子:
每天晚上,在梦中,我看到你,我感觉到你...
给我吗:
enimdisyify
...以及一些插入的数字,例如i = 1,o = 0,依此类推...
en1md1sy1fy
...大写?始终重视自己:)
最后的密码是...
en1Md1sy1fy
我使用了Crypt :: GeneratePassword模块。
对于网站来说,这是一个"秘密"字眼,加上我在其注册的网站令人难忘的内容。
对于其他所有情况,我都使用随机生成的密码。
标准的UNIX实用程序称为pwgen。
几乎可以在任何unix发行版中使用。
Joel Spolsky写了一篇简短的文章:密码管理终于可以了
…there's finally a good way to manage all your passwords. This system works no matter how many computers you use regularly; it works with Mac, Windows, and Linux; it's secure; it doesn't expose your passwords to any internet site (whether or not you trust it); it generates highly secure, random passwords for each and every site, it's fairly easy to use once you have it all set up, it maintains an automatic backup of your password file online, and it's free.
他建议使用DropBox和PasswordSafe或者Password Gorilla。
Mac OS X的"钥匙串访问"应用程序使我们可以访问漂亮的OS X密码生成器。按Command-N,然后单击键图标。我们可以选择密码样式(可记忆,数字,字母数字,随机,FIPS-181)并选择长度。它还会警告我们有关弱密码的信息。
我手动生成了很难记住的符号,数字和大写和小写字母的字符串,这些字符串通常看起来像是在说话。
例子:
&p0pul4rw3b$ite!
然后,我将它们存储为电子邮件草稿,可以从任何地方通过Web邮件进行访问。
杰夫·阿特伍德(Jeff Atwood)建议我们所有人都改用密码而不是密码:
- 密码与通行短语
- 密码布道
makepasswd通过使用Linux的/ dev / random功能生成真正的随机密码,并强调安全性而非可发音性。它还可以加密在命令行上给定的纯文本密码。
最值得注意的选择是
--crypt-md5 Produce encrypted passwords using the MD5 digest algorithm --string STRING Use the characters in STRING to generate random passwords
前者可用于自动生成/ etc / passwd,/ etc / cvspasswd等条目。后者对于在密码中添加标点符号很有用(默认情况下,生成的密码仅包含字母数字字符)。
makepasswd最初是mkircconf程序的一部分,该程序用于集中管理Linux Internet支持合作IRC网络。
密码:
$ gpg --gen-random 1 20 | gpg --enarmor | sed -n 5p
密码:
http://en.wikipedia.org/wiki/Diceware
如果我们想生成易于用户记住的密码,请看一下马尔可夫链。 http://en.wikipedia.org/wiki/Markov_chain
该算法可以产生可发音的无用词,因此它们也变得更容易记住和通过电话中继。一点点Google-fu可以为我们提供几乎所有语言的一些代码示例。
我们还需要获得一个好的字典,以过滤掉以实际单词形式出现的所有密码。
当然,这些密码不会成为高强度的密码,但是当我们需要对某些内容进行基本访问控制并且不想为用户增加难以记住的密码时,它们确实非常有用。
我通常使用密码安全来生成随机密码。对于我实际上希望能够在没有密码安全的情况下记住的密码,我通常会说一个单词和一个数字,然后插入字符
所以你说一句话。
棒球
还有一个数字
24681357
我们会得到一个密码
b2a4s6e8b1a3l5l7
它看起来相当随机,并且probalby很难被强行使用。而且在大多数情况下键入非常容易。我们只需键入单词,然后将光标移回第二个字符,然后键入数字,然后在每个字符之间按右光标键。这不仅使键入变得更容易,而且还使键记录器更难记录我们实际键入的内容。
通常,我输入dd if = / dev / urandom bs = 6 count = 1 | mimencode
并将结果保存在密码安全的地方。
这种Perl单线有时会有所帮助(" rand"并不安全,但通常并不重要):
$ perl -E"say map { chr(33 + rand(126-33)) } 1..31
输出示例:
ET<2:k|D:!z)nBPMv+yitM8x`r.(WwO
import random length = 12 charset = "abcdefghijklmnopqrstuvwxyz0123456789" password = "" for i in range(0, length): token += random.choice(charset) print password
对于相当重要的内容,我喜欢使用字母和数字的组合,例如" 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"是元音和辅音的模式。
在阅读并尝试了一些很好的答案之后,我仍在寻找一种易于调整并且使用非常常见的Linux实用程序和资源的生成技术。
我真的很喜欢gpg --gen-random
的答案,但是感觉有点笨拙?
经过进一步搜索,我找到了这个宝石
echo $(</dev/urandom tr -dc A-Za-z0-9 | head -c8)