同样的输入同样的 id

👁️ 2 人浏览 💬 0 人评论 ❤️ 添加收藏

(build_id(files):files 是 {文件名: 内容},按文件名排序后逐个喂给 sha256,交回前 8 位——同样的输入永远同样的 id。)

同一组文件换个顺序、改一个字节,看 id:

import hashlib


def build_id(files):
    h = hashlib.sha256()
    for name in sorted(files):
        h.update(name.encode() + b"\0" + files[name].encode() + b"\0")
    return h.hexdigest()[:8]

files = {"app.py": "print(1)\n", "lib.py": "X = 2\n"}
same = {"lib.py": "X = 2\n", "app.py": "print(1)\n"}
changed = {"app.py": "print(2)\n", "lib.py": "X = 2\n"}
print(str(build_id(files) == build_id(same)) + "/" + str(build_id(files) == build_id(changed)) + "/" + str(len(build_id(files))))
提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论