网站建设资讯

NEWS

网站建设资讯

Python实现随机密码生成器

前言

运维过程中经常需要用到随机密码,例如服务器、MySQL、redis等密码的设置,用随机密码会相对安全一点。这里使用Python来实现一个随机密码生成器

成都创新互联公司成立十多年来,这条路我们正越走越好,积累了技术与客户资源,形成了良好的口碑。为客户提供成都做网站、成都网站设计、成都外贸网站建设、网站策划、网页设计、域名申请、网络营销、VI设计、网站改版、漏洞修补等服务。网站是否美观、功能强大、用户体验好、性价比高、打开快等等,这些对于网站建设都非常重要,成都创新互联公司通过对建站技术性的掌握、对创意设计的研究为客户提供一站式互联网解决方案,携手广大客户,共同发展进步。

认识random模块

random模块可以从多个字符中随机先出一个字符,我们可以把所有数字放到一个字符串里,random.choice能够从中随机选出一个数字,如下

>>> import random
>>> random.choice('1234567890')
'9'
>>> random.choice('1234567890')
'2'

写个循环随机生成

假如我们需要生成30位随机密码,包含数字、大小写字母、特殊符号。我们可分为四种,然后随机生成并且放到列表里,程序如下:

import random
result = []
for i in range(0, 20):
  if i % 4 == 0:
      result.append(random.choice('1234567890'))
  if i % 4 == 1:
      result.append(random.choice('abcdefghijklmnopqrstuvwxyz'))
  if i % 4 == 2:
      result.append(random.choice('ABCDEFGHIJKLMNOPQRSTUVWXYZ'))
  if i % 4 == 3:
      result.append(random.choice('!$%()+,-.:;>?@[]`{}'))
print("".join(result))

执行结果如下:

[root@devops root]# python /tmp/shijiange.py 
0iQ+3eC]5oA}0aJ@2mJ:
[root@devops root]# python /tmp/shijiange.py 
0qX>9cG-4pY`3tT.0gN`
[root@devops root]# python /tmp/shijiange.py 
1xN%3rG{6aA]0cD.2nL-
[root@devops root]# python /tmp/shijiange.py 
5jB]1xA]2yW,5vM:0bH%

把随机密码打乱

由于循环生成的密码,第一个是数字,第二个是小写字母,第三个是大写字母,第四个是字符。虽然比较复杂,但有点规律,我们可以把20个字母随机打乱。

import random
result = []
for i in range(0, 20):
  if i % 4 == 0:
      result.append(random.choice('1234567890'))
  if i % 4 == 1:
      result.append(random.choice('abcdefghijklmnopqrstuvwxyz'))
  if i % 4 == 2:
      result.append(random.choice('ABCDEFGHIJKLMNOPQRSTUVWXYZ'))
  if i % 4 == 3:
      result.append(random.choice('!$%()+,-.:;>?@[]`{}'))
random.shuffle(result)
print("".join(result))

随机生成密码,运行结果如下,每次运行都生成随机密码:

[root@devops ~]# python /tmp/shijiange.py 
h37;XMo$w;lpAQ7:J.08
[root@devops ~]# python /tmp/shijiange.py 
1ptQ%8c:ED7C8[m$(7yD
[root@devops ~]# python /tmp/shijiange.py 
`ri0+(CwP3Wd0P}-4Yj2
[root@devops ~]# python /tmp/shijiange.py 
qLcJ-F2>)S0K11{fq$q8

分享题目:Python实现随机密码生成器
文章链接:http://njwzjz.com/article/jgddgs.html