[{"data":1,"prerenderedAt":271},["ShallowReactive",2],{"content:zh:sha1-generator":3},{"id":4,"title":5,"body":6,"description":247,"extension":248,"faq":249,"kind":262,"locale":263,"meta":264,"navigation":265,"path":266,"seo":267,"seoTitle":268,"stem":269,"__hash__":270},"pages\u002Fzh\u002Fsha1-generator.md","SHA-1 哈希生成器",{"type":7,"value":8,"toc":236},"minimark",[9,13,17,20,23,26,37,47,50,83,93,108,112,115,119,122,125,129,132,138,142,198,201,223],[10,11,12],"h2",{"id":12},"本工具计算什么",[14,15,16],"p",{},"SHA-1 输出 160 位摘要，通常表示为 40 个十六进制字符。本页面向需要复现旧系统结果、核对兼容性测试或读取历史清单的场景。即使输出看起来都是十六进制，也不能把 SHA-1 与 MD5、SHA-256 直接比较。保留结果时，应一并记录算法名称。",[14,18,19],{},"复现历史摘要需要完全相同的字节，而不只是视觉相似的文本。编辑器附加的换行、文件开头的字节顺序标记、不同的 Unicode 表示，都可能使结果改变。核对已保存的文档时，应选择原文件，不要仅复制文档里显示的文字。",[14,21,22],{},"SHA-1 已被发现存在碰撞弱点。旧协议使用它，并不意味着新系统也应该选择它。若业务需要证明消息来自掌握共享密钥的一方，应使用适当的 HMAC 等认证机制；无密钥摘要不提供这种身份保证。",[10,24,25],{"id":25},"可核对的示例",[14,27,28,32,33,36],{},[29,30,31],"code",{},"UTF-8"," · ",[29,34,35],{},"abc"," · SHA-1",[38,39,45],"pre",{"className":40,"code":42,"language":43,"meta":44},[41],"language-text","a9993e364706816aba3e25717850c26c9cd0d89d\n","text","",[29,46,42],{"__ignoreMap":44},[10,48,49],{"id":49},"如何计算与比较",[51,52,53,69,76],"ol",{},[54,55,56,57,61,62,65,66,68],"li",{},"在",[58,59,60],"strong",{},"输入文本","中粘贴需要计算的内容，或点击",[58,63,64],{},"示例","加载 ",[29,67,35],{},"。工具按 UTF-8 编码计算，保留输入中的空格和换行。",[54,70,71,72,75],{},"单条文本模式下，不超过 64 KiB 的非空输入会在停止输入片刻后自动计算。计算空字符串或更大的文本时，请点击",[58,73,74],{},"生成哈希","。修改输入后，旧结果会立即清除。",[54,77,78,79,82],{},"如需核对已保存的文件，请切换到",[58,80,81],{},"文件校验","，确认算法后选择或拖入文件。文件模式会读取原始字节并自动开始计算。",[14,84,85,86,89,90,92],{},"批量处理时，勾选",[58,87,88],{},"每行独立计算","，选择是否包含空行，再点击",[58,91,74],{},"。逐行模式不会自动计算。CRLF、LF 和 CR 仅用于分隔记录，不计入各行摘要；重复行保留各自的原始行号。",[14,94,95,96,99,100,103,104,107],{},"将完整的十六进制参考值粘贴到",[58,97,98],{},"比较预期值（可选）","，再点击",[58,101,102],{},"核对","。比较时忽略字母大小写和首尾空白，但不接受内部空格或错误长度。",[58,105,106],{},"复制","会保留完整结果。TXT、CSV 导出包含输入标识、算法和摘要，不包含原始文本或密钥。",[10,109,111],{"id":110},"限制隐私与下一步","限制、隐私与下一步",[14,113,114],{},"文本上限为 10 MiB；逐行模式最多接受 10,000 条记录，按过滤空行前的数量计算。文件队列最多 50 个文件，每个不超过 1 GiB，按 2 MiB 分块依序读取。这些限制用于控制浏览器资源占用，不保证每部手机都能快速处理最大输入；必要时可取消计算。计算在浏览器中完成，正常的页面和资源请求仍会发送到托管服务器。",[10,116,118],{"id":117},"sha-1-文件摘要不等于-git-对象-id","SHA-1 文件摘要不等于 Git 对象 ID",[14,120,121],{},"本页计算的是文本或文件的原始字节。在使用 SHA-1 的 Git 仓库中，对象 ID 并不只是可见文件内容的 SHA-1：Git 会加入对象头，创建 blob 时还可能应用过滤规则。因此，和 git hash-object 不同，并不能直接说明本页算法有错。",[14,123,124],{},"核对旧系统前，先确认字段要求的是原始文件摘要、对象标识，还是某个签名结构中的摘要。原始 SHA-1 可以在这里复现，Git 对象应交给 Git 自身的命令计算。保留协议指定的算法名称，不要在不改协议的情况下悄悄换成更长的哈希。",[10,126,128],{"id":127},"原始文件-sha-1-与-git-blob-sha-1-的对照","原始文件 SHA-1 与 Git blob SHA-1 的对照",[14,130,131],{},"对于 abc 这三个字节，Git 的 SHA-1 blob 表示会在内容前加入 blob 3 和一个零字节。不要把可见的反斜杠加数字零输入文本框：这里是在解释对象表示，本工具没有 Git 对象计算模式。",[38,133,136],{"className":134,"code":135,"language":43,"meta":44},[41],"SHA-1 \u002F 原始 abc 字节:\na9993e364706816aba3e25717850c26c9cd0d89d\nSHA-1 \u002F Git blob (62 6c 6f 62 20 33 00 61 62 63):\nf2ba8f84ab5c1bce84a7b441cb1959cfc7093b7f\n",[29,137,135],{"__ignoreMap":44},[10,139,141],{"id":140},"sha-1-兼容性排错","SHA-1 兼容性排错",[143,144,145,161],"table",{},[146,147,148],"thead",{},[149,150,151,155,158],"tr",{},[152,153,154],"th",{},"现象",[152,156,157],{},"原因",[152,159,160],{},"处理方式",[162,163,164,176,187],"tbody",{},[149,165,166,170,173],{},[167,168,169],"td",{},"与 Git 对象 ID 不同",[167,171,172],{},"Git 计算的是对象表示而非单独文件内容",[167,174,175],{},"使用 git hash-object，并检查仓库过滤规则。",[149,177,178,181,184],{},[167,179,180],{},"参考值有 64 个十六进制字符",[167,182,183],{},"这不是完整的普通 SHA-1 摘要",[167,185,186],{},"确认系统是否实际要求 SHA-256。",[149,188,189,192,195],{},[167,190,191],{},"旧文件编辑后无法复现摘要",[167,193,194],{},"保存过程可能改变编码或换行",[167,196,197],{},"优先计算未经编辑的原始文件。",[10,199,200],{"id":200},"相关工具与指南",[202,203,204,211,217],"ul",{},[54,205,206],{},[207,208,210],"a",{"href":209},"\u002Fzh\u002Ffile-md5","文件校验工具",[54,212,213],{},[207,214,216],{"href":215},"\u002Fzh\u002Fsha256-generator","SHA-256",[54,218,219],{},[207,220,222],{"href":221},"\u002Fzh\u002Fguides\u002Fmd5-vs-sha256","MD5 与 SHA-256 的区别",[14,224,225,32,231],{},[207,226,230],{"href":227,"rel":228},"https:\u002F\u002Fcsrc.nist.gov\u002Fpubs\u002Ffips\u002F180-4\u002Fupd1\u002Ffinal",[229],"nofollow","FIPS 180-4",[207,232,235],{"href":233,"rel":234},"https:\u002F\u002Fgit-scm.com\u002Fbook\u002Fen\u002Fv2\u002FGit-Internals-Git-Objects",[229],"Git object format",{"title":44,"searchDepth":237,"depth":237,"links":238},2,[239,240,241,242,243,244,245,246],{"id":12,"depth":237,"text":12},{"id":25,"depth":237,"text":25},{"id":49,"depth":237,"text":49},{"id":110,"depth":237,"text":111},{"id":117,"depth":237,"text":118},{"id":127,"depth":237,"text":128},{"id":140,"depth":237,"text":141},{"id":200,"depth":237,"text":200},"为旧系统兼容性任务计算 SHA-1，核对原始字节，并明确了解其安全限制。","md",[250,253,256,259],{"question":251,"answer":252},"SHA-1 有碰撞弱点，为什么还提供？","用于复现既有格式和旧系统兼容性测试，不代表建议在新的安全设计中采用 SHA-1。",{"question":254,"answer":255},"为什么文件的 SHA-1 与 git hash-object 不同？","Git 会在对象内容前加入类型和长度等头信息，也可能应用过滤规则。本页只计算原始字节摘要，不生成 Git 对象 ID。",{"question":257,"answer":258},"旧接口中的 SHA-1 能直接换成 SHA-256 吗？","不能直接替换，除非同步调整协议或数据格式。两者的摘要长度和算法标识不同。兼容性复现与系统迁移应分别处理。",{"question":260,"answer":261},"SHA-1 匹配能证明旧版软件来自官方吗？","单凭匹配不能证明。参考值必须来自可信来源，而且 SHA-1 存在碰撞弱点。有官方签名验证流程时，应按其流程验证来源。","tool","zh",{},true,"\u002Fzh\u002Fsha1-generator",{"title":5,"description":247},"SHA-1 哈希生成器 — md5hash.net","zh\u002Fsha1-generator","asrFbXiMiEFhXuQyzJ-An5tO6D_XyL4g1Yu00MAMkGQ",1792048884641]