gpt4 book ai didi

python - 相当于 python 中 hash() 的 Linux 命令

转载 作者:太空宇宙 更新时间:2023-11-04 10:37:33 26 4
gpt4 key购买 nike

在我的程序中有一个日志目录。日志目录的名称很长,所以在我的 python 脚本中,我使用哈希函数来获取唯一代码并将其附加到固定字符串即:

LOG_DIR = "abcdefghijklmnopqrstuvwxyz"
log_dir_hashed = hash(LOG_DIR)
new_log_dir = "log_%s" %log_dir_hashed

由于我是 python 的新手,请告诉我上面的代码是否有任何问题?还有如何在shell脚本中做类似的事情,使哈希后得到的python目录名和shell目录名的结果相同。

最佳答案

hash()是 python 和 __hash__ dunders 的实现细节甚至可以覆盖它的作用,所以你不应该那样使用它。它也可能有一些 surprising properties ,比如:

# This is not a collision produced by the used hashing method, it is
# how hash() functions. The result though is a collision.
>>> hash(-2) == hash(-1)
True

使用众所周知的散列,如 MD5 或 SHA1 等。如果您需要加密安全的日志目录,请基于此选择合适的散列。看看https://docs.python.org/3/library/hashlib.html .它们具有等效的命令行工具。

例如:

from hashlib import md5

log_dir_hashed = md5('abcdefghijklmnopqrstuvwxyz'.encode('utf-8')).hexdigest()
new_log_dir = "log_%s" % log_dir_hashed

比较 python :

>>> md5('abcdefghijklmnopqrstuvwxyz'.encode('utf-8')).hexdigest()
'c3fcd3d76192e4007dfb496cca67e13b'

和等效的命令行(一种方法):

 % echo -n 'abcdefghijklmnopqrstuvwxyz' | md5sum - | awk '{print $1}'
c3fcd3d76192e4007dfb496cca67e13b

关于python - 相当于 python 中 hash() 的 Linux 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36736670/

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