gpt4 book ai didi

Dotcloud 上的 Python 在某些功能上崩溃

转载 作者:行者123 更新时间:2023-11-28 18:50:27 27 4
gpt4 key购买 nike

所以我在 dotcloud 上运行一个 flask python 应用程序,我基本上是在尝试散列密码(使用 hashlib.sha512;盐是 uuid.uuid4().bytes)。

user_dict['salt'] = uuid.uuid4().bytes
print_stderr(user_dict['salt'])
print_stderr(hashlib.sha512(user_dict['pwd'] + user_dict['salt']))
user_dict['pwd'] = hashlib.sha512(user_dict['pwd'] + user_dict['salt']).digest()
print_stderr(user_dict['pwd'])

即使在 dotcloud 上的 python 解释器中,这一切也能正常工作,但是当我实际在服务器上运行代码时,它崩溃了(或者,客户端收到 HTTP 500 代码,但 dotcloud 日志只是关闭)。

我可以通过哪些 print 语句被执行,哪些没有被执行,它在 uuid.uuid4().bytes 行崩溃。但是,如果我用常量(例如“uehg83yydh”)替换它,它不会立即失败,而是在 hashlib.sha512(...).digest() 行上失败。

您可能还会注意到 print_stderr 不是标准的 python 函数。这是我用来让 dotcloud 从 python 打印内容的 hack(它打印到 stderr 而不是 stdout)。肯定有我不知道的在 dotcloud 上进行调试的更好方法吗?

最佳答案

为您的代码尝试这个。

  1. 将 uuid 转换为十六进制而不是字节
  2. 更改为使用 update() 而不是将字符串加在一起,这样更简洁一些。

代码:

>>> user_dict['salt'] = uuid.uuid4().hex
>>> print_stderr(user_dict['salt'])
>>> import hashlib
>>> m = hashlib.sha512()
>>> m.update(user_dict['pwd'])
>>> m.update(user_dict['salt'])
>>> user_dict['pwd'] = m.hexdigest()
>>> print_stderr(user_dict['pwd'])

关于Dotcloud 上的 Python 在某些功能上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13792994/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com