保护包含密码的python代码,加密?

时间:2017-05-11 19:06:53

标签: python linux encryption console passwords

我正在尝试在远程服务器上运行python脚本,我不相信。该脚本包含一个重要的密码。 什么是保护该代码/密码的好方法? 我会把它作为一个参数,或者我可以在终端上提示输入,但这将保存在历史记录中。

3 个答案:

答案 0 :(得分:0)

将密码存储在不可靠的服务器上,这绝对是不安全的。如果可以,你必须改变如下的方式。

    在您控制的服务器上
  • ,使用password加密pub_key
      

    通常每个请求都有不同的pub_key / private_key

  • 您不信任的客户id and encrypt_msgauth

  • password_required服务器从客户端获取id and private_key并解密encrypt_msg并比较密码。

  • 如果客户端无用,请删除auth

答案 1 :(得分:0)

长话短说:

  1. 加密您的源代码
  2. 编写自己的python模块加载器,以在导入时解密代码
  3. 在C / C ++中实现模块加载器

有关更多详细信息,请查看this answer或此project

答案 2 :(得分:-1)

处理它的理想方法是使用来自可信服务器的REST-Api调用。 在不受信任的服务器上,您可以存储编码的密码。

编辑1:正如@Luke在下面的评论中指出的那样,base64由于其简单性可以很容易地解密。如建议的那样,我们应该实现对称算法,然后将密钥存储在您的可信服务器上。

您可以浏览具有AES,DES等的pycrypto库。 pypi

的链接
import base64
encoded = base64.urlsafe_b64encode('MyPassword')
## returns 'TXlQYXNzd29yZA=='

将其存储在不受信任的服务器上,然后在可信服务器上解码以生成基于到期时间的密码。

import base64
original = base64.urlsafe_b64decode(encoded)
# Returns MyPassword
  1. 步骤1:在可信服务器上设置密码生成程序
  2. 步骤2:定义程序的get和post方法
  3. 步骤3:从远程服务器,首先执行GET授权令牌 命令。如果此令牌匹配,则生成带有时间限制的密码 期满。
  4. 步骤4:将其移交给服务器。过期后重置它 时间。
  5. 获得临时密码的示例帖子调用将是:

    curl -L https://sandbox.trustedserver.com/v1.0/oauth/token/
    -X  post
    -H  'Content-Type: application/json'
    -H  'Authorization: Basic [Base64_Credentials]'
    -d '{ "grant_type": "client_credentials" }
    

    示例响应将是一个在500秒后到期的访问令牌:

        {
        "token_type": "bearer",
        "access_token": "TXlQYXNzd29yZA==",
        "expires_in": 500
    }
    

    希望它有所帮助。