萌新写的 Python 生成密码微脚本,有个疑问请教各位大佬

2017-11-17 22:51:38 +08:00
 selfAccomplish
[code]
#!/usr/bin/python
# -*- coding: utf-8 -*-
# @Date : 2017-4-1

import sys
import random
from optparse import OptionParser

if __name__ == "__main__":
op_parser = OptionParser()
# -l 参数后面加数字,表示密码长度,默认为 12
op_parser.add_option("-l", "--length", action="store", dest="leng", default=12,
help="Password length,default is 12.")
op_parser.set_description(u'说明:使用 python random_pass.py -l n 产生 n 位随机密码, 0<n<95')
(options, args) = op_parser.parse_args()
length = int(options.leng)
length = (length if 0 < length < 95 else exit(0))
basechars = """!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"""
basechars = list(basechars)
random.shuffle(basechars)
print ''.join(basechars[:length])
[/code]

想请教下各位大佬,optparse 的 description 怎么换行呢,加换行符也不行。
话说还是不太会用这个编辑器,我以为加[code]标签会有代码格式的。。
1879 次点击
所在节点    Python
6 条回复
ysc3839
2017-11-18 09:26:21 +08:00
搜索 Markdown 语法
ipwx
2017-11-18 11:26:48 +08:00
我觉得你这个产生随机密码的逻辑有点古怪。它的组合数是 95!/(n-95)! 而不是 n^95。

你可以用这个,比如产生 120 长度的密码:

import random, string; ''.join(random.choices(string.printable, k=120))
xsd3169
2017-11-19 12:13:47 +08:00
如果是我的话我会使用 openssl 来加盐加密一些信息将结果截取部分来做密码,更通用有效
selfAccomplish
2017-11-19 21:07:06 +08:00
@xsd3169 没想到这个,对于萌新来说稍微复杂了点,但是学到了不错的思路,感谢!
selfAccomplish
2017-11-19 21:11:05 +08:00
@ipwx 精辟精辟,就崇拜一行代码搞定的。感觉自己不补补数学知识没法好好探讨这个问题了哈哈
selfAccomplish
2017-11-19 21:11:51 +08:00
@ysc3839 谢谢,文章只能补充没法编辑了啊。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/407374

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX