Python 生成随机密码 并 将代码生成.exe可执行文件

在运维过程中可能会使用随机密码,下面说说用Python来生成指定长度的随机密码。

方法说明: test_pass_generate(int(sys.argv[1]), int(sys.argv[2]))
参数1为生成密码个数
参数2为生成密码长度
另外代码生成的密码不包括数字0,字母O,大小写的L,避免难以分辨。

# coding: utf-8
import random
import string
import sys,os

def generate_random_pass(pass_len=10):
    lowercase = 'abcdefghijkmnpqrstuvwxyz'
    uppercase = 'ABCDEFGHJKLMNPQRSTUVWXYZ'
    digits = '23456789'
    special = '_!@#$%&*'
    PASS_CHARS = lowercase+uppercase+digits+special
    """
    生成指定长度的密码字符串,当密码长度超过3时,密码中至少包含:
    1个大写字母+1个小写字母+1个特殊字符
    :param password_length:密码字符串的长度
    :return:密码字符串
    """
    char_list = [
        random.choice(lowercase),
        random.choice(uppercase),
        random.choice(digits),
        random.choice(special)
    ]
    if pass_len > 4:
        # random.choice 方法返回一个列表,元组或字符串的随机项
        # (x for x in range(N))返回一个Generator对象
        # [x for x in range(N)] 返回List对象
        char_list.extend([random.choice(PASS_CHARS) for _ in range(pass_len - 4)])
    # 使用random.shuffle来将list中元素打乱
    random.shuffle(char_list)
    return ''.join(char_list[0:pass_len])

def test_pass_generate(pass_num,pass_len):
    ls=[]
    for i in range(pass_num):
        random_pass = generate_random_pass(pass_len)
        if random_pass not in ls:
            ls.append(random_pass)
    path=os.path.join(os.path.expanduser('~'),"Desktop",'生成密码.txt')
    f = open(path,'w')
    for i in ls:
        print(i)  #不想写入文件可以直接输出
        f.write(i+'\n')
    f.close()
    
test_pass_generate(int(sys.argv[1]), int(sys.argv[2]))

使用方法举例:
生成5个长度为7位的随机密码 ,另外如果在windows上执行,代码同时会在桌面上生成结果文件。如下:

#python genpass.py 5 7
egP4#vQ
zP7J!C$
2c@PKTC
fcB5iT&
Kup7$&Y

将上述代码生成windows 的.exe可执行文件:

将Python文件编译成exe可执行文件,可使用pyinstaller工具或py2exe工具实现。这里使用pyinstaller来说明。

一、使用pip安装pyinstaller模块

pip install pyinstaller

Collecting pyinstaller
Downloading PyInstaller-3.3.tar.gz (3.5MB)
100% |████████████████████████████████| 3.5MB 383kB/s
Requirement already satisfied: setuptools in 
Successfully built pyinstaller pefile future
Installing collected packages: future, pefile, altgraph, macholib, pypiwin32, pyinstaller
Successfully installed altgraph-0.15 future-0.16.0 macholib-1.9 pefile-2017.11.5 pyinstaller-3.3 pypiwin32-220

二、生成exe文件

准备好需要编译成exe的Python文件
在这个Python文件的当前路径执行pyinstaller -F xxx.py(xxx为Python代码文件名)
控制台会打印编译信息,最后会打印编译成功,表示生成exe文件成功

PS C:\Users\csits\Desktop> pyinstaller.exe -F .\genpass.py
154 INFO: PyInstaller: 4.2
154 INFO: Python: 3.6.3
155 INFO: Platform: Windows-10-10.0.19041-SP0
158 INFO: wrote C:\Users\csits\Desktop\genpass.spec
169 INFO: UPX is not available.
14190 INFO: Bootloader c:\users\csits\appdata\local\programs\python\python36\lib\site-packages\PyInstaller\bootloader\Windows-64bit\run.exe
14190 INFO: checking EXE

14204 INFO: Writing RT_ICON 7 resource with 1128 bytes
14213 INFO: Updating manifest in C:\Users\csits\Desktop\build\genpass\run.exe.b10_rizh
14217 INFO: Updating resource type 24 name 1 language 0
14224 INFO: Appending archive to EXE C:\Users\csits\Desktop\dist\genpass.exe
14235 INFO: Building EXE from EXE-00.toc completed successfully.

三、当前目录下会多出一个dist目录,此目录下就是Python文件生成的exe可执行文件。使用exe文件加相关参数生成密码:

C:\>C:\genpass.exe   10 5
Spu&8
B!$u5
3$M6d
*e7hP
iUV7*
Et35$
4P_ax
Yk4!V
n&28U
R2f%h

C:\>C:\genpass.exe   5 10
fufQuQ7$HP
qDaYjA@u%7
@@mSbdr59E
#h3Kw8&s2b
P6q!3GvQ$L

C:\>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值