Python脚本命令行执行隐藏密码等敏感信息

时间:2022-07-24
本文章向大家介绍Python脚本命令行执行隐藏密码等敏感信息,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Linux命令行登录系统,MySQL时,输入的密码看不到的,怎么在执行Python脚本时,密码等敏感信息也不让它出现呢?

目录

1.效果

2. 使用 getpass

3. 使用click

1

效果

在终端输入密码,不显示

G:pythonsprintsprint>python 3.py
请输入你的用户名:admin
请输入你的密码:
账号密码正确

G:pythonsprintsprint>

2

使用getpass模块

源码:其中原密码做了MD5加密,避免了别人通过.py 文件 拿到密码明文,MD5加密不可逆,很难解密,甚至可以双层MD5。但不要使用这种123456 这种密码。

import sys
import hashlib
import getpass


if __name__ == '__main__':
    lengthArgv = len(sys.argv)
    if (lengthArgv == 2):
        option_day = sys.argv[1]
    else:
        option_day = 3
    # 密码做了 md5 加密
    username_src = "admin"
    password_src = "7fef6171469e80d32c0559f88b377245"

    username = input("请输入你的用户名:")
    # getpass这个模块可以帮助你输入密码时把密码隐藏
    password = getpass.getpass("请输入你的密码:")

    # 创建md5对象
    m = hashlib.md5()
    # Tips
    # 此处必须encode
    # 若写法为m.update(str)  报错为:Unicode-objects must be encoded before hashing
    # 因为python3里默认的str是unicode
    # 或者 b = bytes(str, encoding='utf-8'),作用相同,都是encode为bytes
    b = password.encode(encoding='utf-8')
    m.update(b)
    str_md5 = m.hexdigest()
    if not (username == username_src and password_src == str_md5):
        print("账号密码错误")
        exit(500)
    else:
        print("账号密码正确")
        exit(200)

3

使用click模块

click 模块 目的是让命令行程序更优雅。包括传参,屏蔽敏感信息。click.prompt 就这么简单。有篇翻译 -

如何编写完美的Python命令行程序?

https://blog.csdn.net/weixin_42232219/article/details/86587201

import sys
import hashlib
import click


if __name__ == '__main__':
    lengthArgv = len(sys.argv)
    if (lengthArgv == 2):
        option_day = sys.argv[1]
    else:
        option_day = 3
    # 密码做了 md5 加密
    username_src = "admin"
    password_src = "7fef6171469e80d32c0559f88b377245"

    username = click.prompt("请输入你的用户名")
    # getpass这个模块可以帮助你输入密码时把密码隐藏
    password = click.prompt("请输入你的密码", hide_input=True)

    # 创建md5对象
    m = hashlib.md5()

    # Tips
    # 此处必须encode
    # 若写法为m.update(str)  报错为:Unicode-objects must be encoded before hashing
    # 因为python3里默认的str是unicode
    # 或者 b = bytes(str, encoding='utf-8'),作用相同,都是encode为bytes
    b = password.encode(encoding='utf-8')
    m.update(b)
    str_md5 = m.hexdigest()
    if not (username == username_src and password_src == str_md5):
        print("账号密码错误")
        exit(500)
    else:
        print("账号密码正确")
        exit(200)

运行效果:

G:pythonsprintsprint>python 4.py
请输入你的用户名: admin
请输入你的密码:
账号密码正确

G:pythonsprintsprint>

END