【问题标题】:How to use the PyNaCl secret key generated as environnement variable如何使用作为环境变量生成的 PyNaCl 密钥
【发布时间】:2017-07-01 18:32:46
【问题描述】:

我正在使用 PyNaCl 生成密钥:

nacl.utils.random(nacl.secret.SecretBox.KEY_SIZE)

键看起来像:

b'\xa5\x8bL\xc4\xc0\xe6\xe3\xe5#\xb4{)\xd7uO(\xb11\x85\x88N\xfd\xf6>\nC\xb5\x95\\\xf1\x8b\xe8'

它们是 32 字节长并且必须保持 32 字节长,我如何将它们用作环境变量?

编辑:

我尝试了以下方法:

my_key = SecureMessage.generate #  b'\xe1\xd1\xef\x8anx\xb5\xf1n\xa8N/w\x90\xaejG\xdaN\x97\xbc\xb2\x90&\xedB\xa9\xf3/8\xa4?'
my_key_as_hex = my_key.hex() # e1d1ef8a6e78b5f16ea84e2f7790ae6a47da4e97bcb29026ed42a9f32f38a43f
my_key = bytes(my_key_as_hex, "utf-8") # b'e1d1ef8a6e78b5f16ea84e2f7790ae6a47da4e97bcb29026ed42a9f32f38a43f'

【问题讨论】:

  • 将它们转换为可以存储为环境变量的东西,例如十六进制或uucode。
  • 我测试你说的似乎没有用,我编辑我的帖子
  • @mel 它在什么方面不起作用?那是非常好的建议。现在您需要做的就是添加它。
  • @Coldspeed 我的原始字节和我的最终字节之间有一个转换看看编辑部分
  • @mel 为什么要转成字节?

标签: python python-3.x byte pynacl


【解决方案1】:

这里是如何去做。

生成您的密钥

key = nacl.utils.random(nacl.secret.SecretBox.KEY_SIZE)

此时key 是字节格式:

b"T\x93\xacsg'\xb4\x93\xc2+.\x8a\xe0\x8f\xd7\x8eCi\xd0\xd7\xb0\xa1\xdeX\x93\x05\xa2\xb6\xf6\x82`%"

按照 cmets 中的建议,将其转换为十六进制

hexed_key = key.hex()

这应该会给你类似的东西:

5493ac736727b493c22b2e8ae08fd78e4369d0d7b0a1de589305a2b6f6826025

将上述值存储在您的环境变量中。当需要使用您的密钥时,只需将其转换回来即可。

hexed_key = os.environ.get('HEXED_KEY', '')
box = nacl.secret.SecretBox(bytes.fromhex(hexed_key))

最后一行要注意的部分是bytes.fromhex(hexed_key),它将您的十六进制转换为字节

您的盒子现在可以使用了...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    • 2016-11-16
    • 2019-09-02
    • 1970-01-01
    • 1970-01-01
    • 2021-01-08
    相关资源
    最近更新 更多