canonical_id: "hash" display_name: "計算雜湊" category: "logic" version: "v1" wasi_target: "preview1" stability: "floating" runtime_compat: - "cf-workers" - "workerd" - "wazero" constraints: max_size_kb: 2048 max_cold_start_ms: 50 no_network_syscall: true no_filesystem_syscall: true io_model: "stdin_stdout_json" input_schema: type: object required: [input] properties: algorithm: type: string enum: [sha256, sha1, md5] description: 雜湊演算法,預設 sha256 input: type: string description: 要算雜湊的內容 encoding: type: string enum: [hex, base64] description: 輸出編碼,預設 hex output_schema: type: object properties: success: type: boolean data: type: object properties: result: type: string algorithm: type: string encoding: type: string gherkin_tests: - scenario: "sha256 hex(預設)" given: '{"algorithm":"sha256","input":"hello"}' then_contains: '"result":"2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824"' - scenario: "sha1" given: '{"algorithm":"sha1","input":"hello"}' then_contains: '"result":"aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d"' - scenario: "md5" given: '{"algorithm":"md5","input":"hello"}' then_contains: '"result":"5d41402abc4b2a76b9719d911017c592"' - scenario: "base64 編碼" given: '{"algorithm":"sha256","input":"hello","encoding":"base64"}' then_contains: '"result":"LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ="' - scenario: "預設 algorithm=sha256" given: '{"input":"hello"}' then_contains: '"algorithm":"sha256"' - scenario: "不支援的 algorithm" given: '{"algorithm":"crc32","input":"hello"}' then_contains: '{"success":false' tags: [builtin, logic, hash, checksum, versioning] description: >- 計算內容雜湊(sha256/sha1/md5,輸出 hex 或 base64)。純計算,無網路/檔案 syscall。 用途:出貨線版本號機制(Leo/Arcrun#91)——內容一變雜湊必變,是「改了東西版本沒動」在結構上 不可能發生的機制來源;build 站核對官方成品指紋也用它。 config_example: | compute_hash: # 節點名稱(可自訂) algorithm: "sha256" # 演算法(選填,預設 sha256),可選值:sha256/sha1/md5 input: "{{ctx.bundle_content}}" # 要算雜湊的內容(必填) encoding: "hex" # 輸出編碼(選填,預設 hex),可選值:hex/base64