{"record":{"id":"95d1e9a25fb81745","repo":"alibaba/DataX","slug":"dx-digest-paras-index-1-must-be-md5-or-sha1","errorCode":null,"errorMessage":"dx_digest paras index 1 must be md5 or sha1","messagePattern":"dx_digest paras index 1 must be md5 or sha1","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"core/src/main/java/com/alibaba/datax/core/transport/transformer/DigestTransformer.java","lineNumber":48,"sourceCode":"\n    @Override\n    public Record evaluate(Record record, Object... paras) {\n\n        int columnIndex;\n        String type;\n        String charType;\n\n        try {\n            if (paras.length != 3) {\n                throw new RuntimeException(\"dx_digest paras length must be 3\");\n            }\n\n            columnIndex = (Integer) paras[0];\n            type = (String) paras[1];\n            charType = (String) paras[2];\n\n            if (!StringUtils.equalsIgnoreCase(MD5, type) && !StringUtils.equalsIgnoreCase(SHA1, type)) {\n                throw new RuntimeException(\"dx_digest paras index 1 must be md5 or sha1\");\n            }\n            if (!StringUtils.equalsIgnoreCase(TO_UPPER_CASE, charType) && !StringUtils.equalsIgnoreCase(TO_LOWER_CASE, charType)) {\n                throw new RuntimeException(\"dx_digest paras index 2 must be toUpperCase or toLowerCase\");\n            }\n        } catch (Exception e) {\n            throw DataXException.asDataXException(TransformerErrorCode.TRANSFORMER_ILLEGAL_PARAMETER, \"paras:\" + Arrays.asList(paras) + \" => \" + e.getMessage());\n        }\n\n        Column column = record.getColumn(columnIndex);\n\n        try {\n            String oriValue = column.asString();\n\n            // 如果字段为空，作为空字符串处理\n            if (oriValue == null) {\n                oriValue = \"\";\n            }\n            String newValue;","sourceCodeStart":30,"sourceCodeEnd":66,"githubUrl":"https://github.com/alibaba/DataX/blob/80ec23d5c5328eb90ca364d2749e92dfaf44541e/core/src/main/java/com/alibaba/datax/core/transport/transformer/DigestTransformer.java#L30-L66","documentation":"The dx_digest transformer's second parameter (index 1) must be 'md5' or 'sha1' (case-insensitive); anything else throws RuntimeException and is rewrapped as TRANSFORMER_ILLEGAL_PARAMETER. This parameter selects the hash algorithm applied to the column's string value.","triggerScenarios":"Passing e.g. \"sha256\", \"MD5 \" (trailing space), or a typo like \"md6\" as paras[1]: {\"name\":\"dx_digest\",\"parameter\":[0,\"sha256\",\"toUpperCase\"]}.","commonSituations":"Trying to use hash algorithms DataX has not implemented (sha256/sha512); whitespace/case-safe but spell-unsafe copy-paste edits.","solutions":["Use exactly \"md5\" or \"sha1\" (any letter case, no surrounding whitespace).","If sha256 is required, implement a custom transformer extending ComplexTransformer rather than hacking dx_digest.","Trim parameters when generating the job JSON programmatically."],"exampleFix":"// before\n{\"name\": \"dx_digest\", \"parameter\": [0, \"sha256\", \"toUpperCase\"]}\n\n// after\n{\"name\": \"dx_digest\", \"parameter\": [0, \"sha1\", \"toUpperCase\"]}","handlingStrategy":"validation","validationCode":"String type = (String) paras[1];\nif (!\"md5\".equalsIgnoreCase(type) && !\"sha1\".equalsIgnoreCase(type)) {\n    throw new IllegalArgumentException(\"dx_digest type must be md5|sha1, got: \" + type);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Whitelist md5/sha1 in job generation code.","For sha256+, write a custom ComplexTransformer instead."],"tags":["datax","transformer","dx-digest","config"],"backgroundTag":null,"analyzedSha":"80ec23d5c5328eb90ca364d2749e92dfaf44541e","analyzedAt":"2026-08-14T15:33:51.187Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}