Base64编码是在标准库中,并将停止肩膀冲浪者:

>>> import base64 >>> print base64.b64encode("password") cGFzc3dvcmQ= >>> print base64.b64decode("cGFzc3dvcmQ=") password

Douglas F Shearer's是Unix中普遍认可的解决scheme,当您需要为远程login指定密码时。

您可以添加–password-from-file选项来指定path并从文件读取纯文本。

该文件可以在用户自己的操作系统保护的区域中。 它也允许不同的用户自动拿起他们自己的文件。

对于脚本用户不被允许知道的密码,您可以使用严格的权限运行脚本,并拥有root / admin用户拥有的密码文件。

如果您正在使用Unix系统,请利用标准Python库中的netrc模块。 它从单独的文本文件(.netrc)读取密码,其格式如下。

这里有一个小例子:

import netrc # Define which host in the .netrc file to use HOST = 'mailcluster.loopia.se' # Read from the .netrc file in your home directory secrets = netrc.netrc() username, account, password = secrets.authenticators( HOST ) print username, password

这是一个简单的方法:

创build一个python模块 – 我们称之为peekaboo.py。

在peekaboo.py中,包含密码和需要该密码的任何代码

创build一个编译版本 – peekaboo.pyc – 通过导入这个模块(通过python命令行等)。

现在,删除peekaboo.py。

你现在可以高兴地依靠peekaboo.pyc来导入peekaboo。 由于peekaboo.pyc是字节编译的,它对于临时用户是不可读的。

这应该比base64解码更安全一些 – 虽然它易受py_to_pyc反编译器的影响。

假设用户在运行时不能给出用户名和密码,最好的解决scheme可能是一个单独的源文件,只包含导入到主代码中的用户名和密码的variables初始化。 这个文件只需要在凭证更改时进行编辑。 否则,如果你只是担心平均记忆的肩膀,base 64编码可能是最简单的解决scheme。 ROT13太容易手动解码,不区分大小写,在encryption状态下保留太多的意义。 在python脚本之外编码您的密码和用户标识。 他有脚本解码在运行时使用。

为自动化任务提供脚本凭据始终是一个有风险的build议。 您的脚本应该拥有自己的凭据,而且它所使用的帐户应该没有其他访问权限,而不是正好是必需的。 至less密码应该很长,而且是随机的。

如何从脚本外部的文件导入用户名和密码? 这样,即使有人拿到脚本,他们也不会自动获得密码。

base64是为您的简单需求去的方式。 无需导入任何东西:

>>> 'your string'.encode('base64') 'eW91ciBzdHJpbmc=\n' >>> _.decode('base64') 'your string'

这是一个很常见的问题。 通常情况下,你可以做的最好的是要么

A)创build某种ceasar密码function来编码/解码(只是不是rot13)或B)首选的方法是使用encryption密钥,在您的程序范围内,对密码进行编码/解码。 您可以在其中使用文件保护来保护访问密钥。 如果您的应用程序作为服务/守护程序(如Web服务器)运行,则可以使用密码input作为服务启动的一部分将密钥放入受密码保护的密钥库中。 这将需要一个pipe理员重新启动你的应用程序,但是你将有很好的保护你的configuration密码。

您的操作系统可能提供安全encryption数据的工具。 例如,在Windows上有DPAPI(数据保护API)。 为什么不在第一次运行时向用户询问他们的凭据,然后将它们encryption以便随后运行?

更多的自制方法,而不是将authentication/密码/用户名转换为encryption细节。 FTPLIB就是这个例子。 “ pass.csv ”是csv文件的名称

以CSV格式保存密码,如下所示:

用户名

用户密码

(没有列标题)

读取CSV并将其保存到列表中。

使用列表元素作为validation细节。

完整的代码。

import os import ftplib import csv cred_detail = [] os.chdir("Folder where the csv file is stored") for row in csv.reader(open("pass.csv","rb")): cred_detail.append(row) ftp = ftplib.FTP('server_name',cred_detail[0][0],cred_detail[1][0])

将configuration信息放在一个encryption的configuration文件中。 在您的代码中使用密钥查询这些信息。 将此密钥放置在每个环境的单独文件中,并且不要将其与代码一起存储。

在网上有几个ROT13工具用Python编写 – 只是谷歌他们。 ROT13将string脱机编码,将其复制到源中,在传输点进行解码。

但是,这是非常薄弱的保护…

你知道坑吗?

test.py

from pit import Pit config = Pit.get('section-name', {'require': { 'username': 'DEFAULT STRING', 'password': 'DEFAULT STRING', }}) print(config)

跑:

$ python test.py {'password': 'my-password', 'username': 'my-name'}

〜/ .pit / default.yml:

section-name: password: my-password username: my-name

如果在Windows上运行,可以考虑使用win32crypt库。 它允许正在运行脚本的用户存储和检索受保护的数据(密钥,密码),因此密码绝不会以明文或模糊forms存储在代码中。 我不确定是否有其他平台的等效实现,所以严格使用win32crypt的代码是不可移植的。

我相信这个模块可以在这里获得: http : //timgolden.me.uk/pywin32-docs/win32crypt.html

python如何隐藏密码_在python脚本中隐藏密码(仅限不安全的混淆)相关推荐

  1. heidisql修改mysql密码_读取HeidiSQL 配置文件中的密码

    读取HeidiSQL 配置文件中的密码 2017-1-21 5:42:01 codegay HeidiSQL是一款开源的SQL管理工具,用管理MYSQL,MSSQL 等数据库, 很多管理工具都会把密码 ...

  2. qt 隐藏控制台_在控制台程序中隐藏控制台窗口

    大家都知道,当编写一个win32 console application时,当运行此类程序的时候 默认情况下会有一个类似DOS窗口的console窗口,但是有的时候我们只想在程序 中运行一段功能代码, ...

  3. 从硬盘的隐藏分区启动计算机,Windows 10中隐藏分区、取消分区,看这个就够了!...

    原标题:Windows 10中隐藏分区.取消分区,看这个就够了! 在计算机上隐藏驱动器或分区后用户将无法再看到它.隐藏分区可以带来许多好处,这就是为什么Mac和Windows都提供了几个内置工具来隐藏 ...

  4. python写一个类方法_重写python脚本,在脚本的每个类中注入一个方法 - python

    假设我有一个python模块foo.py,其中包含: class Foo(object): def __init__(self): pass 接下来,我想解析此脚本,并在每个类中注入一个方法,然后将其 ...

  5. 树莓派python编程入门与实战解压密码_树莓派Python编程入门与实战

    目录 第一部分 树莓派编程环境 第1章 配置树莓派 3 1.1 获取树莓派 3 1.1.1 了解树莓派的历史 3 1.1.2 为什么要学习用Python 在树莓派上进行编程 4 1.2 获取树莓派 5 ...

  6. python做excel宏_利用Python 开发 Excel 宏脚本的神器!

    今天介绍一个叫 xlpython 的库,通过它我们可以用 Python 来开发 Excel 的宏脚本,真正实现在 Excel 中调用 Python. 基本环境 操作系统:Windows 10 x64 ...

  7. python调用excel宏_用Python如何开发Excel宏脚本?新手必学

    今天介绍一个叫 xlpython 的库,通过它我们可以用 Python 来开发 Excel 的宏脚本,真正实现在 Excel 中调用 Python. 基本环境 操作系统:Windows 10 x64 ...

  8. python连数据库如何不写明文密码_在Python中开发时保护MySQL密码?

    简短的回答 你不能 如果密码存储在发送给最终用户的工件中,您必须认为它已被泄露!即使工件是已编译的二进制文件,也总是有(或多或少复杂的)获取密码的方法. 保护资源的唯一方法是只向最终用户公开有限的AP ...

  9. python 共享文件夹 密码_用不同的用户名和密码登录网络上的共享文件夹

    网络共享时,有时不同的文件夹需要不同的用户名和密码登入,而windows已经记录了一个原来使用的用户名及密码默认使用这个用户名及密码不再弹出用户名及密码输入提示对话框.简易解决办法.如下: 1.注销当 ...

  10. python数据类型定义为_一Python 数据类型

    变量.字符编码 1:声明变量: #_*_coding:utf-8_*_ #__author__:"shikai" name="shikai" #变量名:name ...

最新文章

  1. 除了《深入理解 Java 虚拟机》,还可以看怎么系统学习 Java 虚拟机?
  2. keras ImageDataGenerator 用法
  3. Linux之DNS服务器搭建及常见DNS***和防御
  4. Qt学习笔记之UDP编程
  5. spring security 学习二
  6. java 图片批量上传_java实现批量上传图片,还要保证每个图片的顺序号,疑问求教!...
  7. 第十一章 图形视图、动画、状态机框架
  8. HashSet存储元素保证唯一性的代码及图解
  9. 梦断代码最后4章读后感
  10. 聊一下《技术力量-一线技术团队成功启示录》
  11. mosek安装及出现的问题解决方法
  12. 修复漏洞显示连接服务器失败,服务器安全狗漏洞补丁失败怎么办
  13. 腾讯云服务器无限流量,腾讯云服务器有流量限制吗,您看仔细了
  14. 自定义可折叠和展开的View
  15. python画xy轴_python画双y轴图像的示例代码
  16. 记录错误:ImportError: No module named ‘tools‘。jupyter无法import第三方文件夹的库
  17. 小型企业网的搭建(企业网三层架构)
  18. 认识广东民系,了解潮汕人
  19. 清华制造的百名IT精英
  20. hypermesh 连接单元_超低延时 13mm超大动圈单元 QCY T8S半入耳游戏耳机_蓝牙耳机

热门文章

  1. 右侧追击(三)——策略优化
  2. 运算形式电路的分析方法——网孔电流法
  3. 维基百科:互动的乌托邦?[zt]
  4. 记一次使用百度云图像搜索功能 python sdk
  5. java extends runtimeexception_Java中RuntimeException和Exception的区别
  6. 【华人学者风采】夏幼南 乔治亚理工学院
  7. php一次请求完成的过程,QEEPHP一次完整请求的过程(转)
  8. Java设计模式-开闭原则
  9. django queryset 合并
  10. uni-app:nvue原生APP开发小记