des_decrypt
Decrypt DES-encrypted data with customizable key, IV, padding, mode, and input format (base64/hex).
Instructions
decrypt text with des
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | text to decrypt | |
| key | No | decryption key, default is your-key | |
| iv | No | initialization vector, default is your-iv- | your-iv- |
| padding | No | padding mode, default is Pkcs7 | Pkcs7 |
| inputFormat | No | input format, default is base64 | base64 |
| mode | No | mode, default is ECB | ECB |
Implementation Reference
- src/service/des.ts:458-541 (registration)Registration of the des_decrypt tool via server.tool() with Zod schema for input validation
server.tool( "des_decrypt", "decrypt text with des", { content: z.string().describe("text to decrypt"), key: z .string() .optional() .describe("decryption key, default is your-key"), iv: z .string() .optional() .describe("initialization vector, default is your-iv-") .default("your-iv-"), padding: z .enum([ "Pkcs7", "Iso97971", "AnsiX923", "Iso10126", "ZeroPadding", "NoPadding", ]) .optional() .describe("padding mode, default is Pkcs7") .default("Pkcs7"), inputFormat: z .enum(["base64", "hex"]) .optional() .describe("input format, default is base64") .default("base64"), mode: z .enum(["ECB", "CBC", "CFB", "OFB", "CTR"]) .optional() .describe("mode, default is ECB") .default("ECB"), }, async ({ content, key, iv, padding, inputFormat, mode }) => { let result = ""; if (mode === "ECB") { result = DESUtil.decryptECB(content, key ?? "your-key"); } else if (mode === "CBC") { result = DESUtil.decryptCBC( content, key ?? "your-key", iv ?? "your-iv-", (padding ?? "Pkcs7") as PaddingMode, (inputFormat ?? "base64") as OutputFormat ); } else if (mode === "CFB") { result = DESUtil.decryptCFB( content, key ?? "your-key", iv ?? "your-iv-", (padding ?? "Pkcs7") as PaddingMode, (inputFormat ?? "base64") as OutputFormat ); } else if (mode === "OFB") { result = DESUtil.decryptOFB( content, key ?? "your-key", iv ?? "your-iv-", (padding ?? "Pkcs7") as PaddingMode, (inputFormat ?? "base64") as OutputFormat ); } else if (mode === "CTR") { result = DESUtil.decryptCTR( content, key ?? "your-key", iv ?? "your-iv-", (padding ?? "Pkcs7") as PaddingMode, (inputFormat ?? "base64") as OutputFormat ); } return { content: [ { type: "text", text: result, }, ], }; } ); - src/service/des.ts:462-494 (schema)Zod schema defining input parameters for des_decrypt: content, key, iv, padding, inputFormat, mode
content: z.string().describe("text to decrypt"), key: z .string() .optional() .describe("decryption key, default is your-key"), iv: z .string() .optional() .describe("initialization vector, default is your-iv-") .default("your-iv-"), padding: z .enum([ "Pkcs7", "Iso97971", "AnsiX923", "Iso10126", "ZeroPadding", "NoPadding", ]) .optional() .describe("padding mode, default is Pkcs7") .default("Pkcs7"), inputFormat: z .enum(["base64", "hex"]) .optional() .describe("input format, default is base64") .default("base64"), mode: z .enum(["ECB", "CBC", "CFB", "OFB", "CTR"]) .optional() .describe("mode, default is ECB") .default("ECB"), }, - src/service/des.ts:495-540 (handler)Handler function for des_decrypt tool - delegates to DESUtil decrypt methods based on mode
async ({ content, key, iv, padding, inputFormat, mode }) => { let result = ""; if (mode === "ECB") { result = DESUtil.decryptECB(content, key ?? "your-key"); } else if (mode === "CBC") { result = DESUtil.decryptCBC( content, key ?? "your-key", iv ?? "your-iv-", (padding ?? "Pkcs7") as PaddingMode, (inputFormat ?? "base64") as OutputFormat ); } else if (mode === "CFB") { result = DESUtil.decryptCFB( content, key ?? "your-key", iv ?? "your-iv-", (padding ?? "Pkcs7") as PaddingMode, (inputFormat ?? "base64") as OutputFormat ); } else if (mode === "OFB") { result = DESUtil.decryptOFB( content, key ?? "your-key", iv ?? "your-iv-", (padding ?? "Pkcs7") as PaddingMode, (inputFormat ?? "base64") as OutputFormat ); } else if (mode === "CTR") { result = DESUtil.decryptCTR( content, key ?? "your-key", iv ?? "your-iv-", (padding ?? "Pkcs7") as PaddingMode, (inputFormat ?? "base64") as OutputFormat ); } return { content: [ { type: "text", text: result, }, ], }; } - src/service/des.ts:50-76 (helper)DESUtil.decryptECB - decrypts ciphertext in ECB mode using CryptoJS.DES.decrypt
static decryptECB( ciphertext: string, key: string, padding: PaddingMode = "Pkcs7", inputFormat: OutputFormat = "base64" ): string { const keyHex = CryptoJS.enc.Utf8.parse(key); let decrypted; if (inputFormat === "hex") { const ciphertextHex = CryptoJS.enc.Hex.parse(ciphertext); const ciphertextParams = CryptoJS.lib.CipherParams.create({ ciphertext: ciphertextHex, }); decrypted = CryptoJS.DES.decrypt(ciphertextParams, keyHex, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad[padding], }); } else { decrypted = CryptoJS.DES.decrypt(ciphertext, keyHex, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad[padding], }); } return decrypted.toString(CryptoJS.enc.Utf8); } - src/service/des.ts:116-146 (helper)DESUtil.decryptCBC - decrypts ciphertext in CBC mode using CryptoJS.DES.decrypt with IV
static decryptCBC( ciphertext: string, key: string, iv: string, padding: PaddingMode = "Pkcs7", inputFormat: OutputFormat = "base64" ): string { const keyHex = CryptoJS.enc.Utf8.parse(key); const ivHex = CryptoJS.enc.Utf8.parse(iv); let decrypted; if (inputFormat === "hex") { const ciphertextHex = CryptoJS.enc.Hex.parse(ciphertext); const ciphertextParams = CryptoJS.lib.CipherParams.create({ ciphertext: ciphertextHex, }); decrypted = CryptoJS.DES.decrypt(ciphertextParams, keyHex, { iv: ivHex, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad[padding], }); } else { decrypted = CryptoJS.DES.decrypt(ciphertext, keyHex, { iv: ivHex, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad[padding], }); } return decrypted.toString(CryptoJS.enc.Utf8); } - src/service/des.ts:186-216 (helper)DESUtil.decryptCFB - decrypts ciphertext in CFB mode using CryptoJS.DES.decrypt with IV
static decryptCFB( ciphertext: string, key: string, iv: string, padding: PaddingMode = "Pkcs7", inputFormat: OutputFormat = "base64" ): string { const keyHex = CryptoJS.enc.Utf8.parse(key); const ivHex = CryptoJS.enc.Utf8.parse(iv); let decrypted; if (inputFormat === "hex") { const ciphertextHex = CryptoJS.enc.Hex.parse(ciphertext); const ciphertextParams = CryptoJS.lib.CipherParams.create({ ciphertext: ciphertextHex, }); decrypted = CryptoJS.DES.decrypt(ciphertextParams, keyHex, { iv: ivHex, mode: CryptoJS.mode.CFB, padding: CryptoJS.pad[padding], }); } else { decrypted = CryptoJS.DES.decrypt(ciphertext, keyHex, { iv: ivHex, mode: CryptoJS.mode.CFB, padding: CryptoJS.pad[padding], }); } return decrypted.toString(CryptoJS.enc.Utf8); } - src/service/des.ts:256-286 (helper)DESUtil.decryptOFB - decrypts ciphertext in OFB mode using CryptoJS.DES.decrypt with IV
static decryptOFB( ciphertext: string, key: string, iv: string, padding: PaddingMode = "Pkcs7", inputFormat: OutputFormat = "base64" ): string { const keyHex = CryptoJS.enc.Utf8.parse(key); const ivHex = CryptoJS.enc.Utf8.parse(iv); let decrypted; if (inputFormat === "hex") { const ciphertextHex = CryptoJS.enc.Hex.parse(ciphertext); const ciphertextParams = CryptoJS.lib.CipherParams.create({ ciphertext: ciphertextHex, }); decrypted = CryptoJS.DES.decrypt(ciphertextParams, keyHex, { iv: ivHex, mode: CryptoJS.mode.OFB, padding: CryptoJS.pad[padding], }); } else { decrypted = CryptoJS.DES.decrypt(ciphertext, keyHex, { iv: ivHex, mode: CryptoJS.mode.OFB, padding: CryptoJS.pad[padding], }); } return decrypted.toString(CryptoJS.enc.Utf8); } - src/service/des.ts:326-356 (helper)DESUtil.decryptCTR - decrypts ciphertext in CTR mode using CryptoJS.DES.decrypt with IV
static decryptCTR( ciphertext: string, key: string, iv: string, padding: PaddingMode = "Pkcs7", inputFormat: OutputFormat = "base64" ): string { const keyHex = CryptoJS.enc.Utf8.parse(key); const ivHex = CryptoJS.enc.Utf8.parse(iv); let decrypted; if (inputFormat === "hex") { const ciphertextHex = CryptoJS.enc.Hex.parse(ciphertext); const ciphertextParams = CryptoJS.lib.CipherParams.create({ ciphertext: ciphertextHex, }); decrypted = CryptoJS.DES.decrypt(ciphertextParams, keyHex, { iv: ivHex, mode: CryptoJS.mode.CTR, padding: CryptoJS.pad[padding], }); } else { decrypted = CryptoJS.DES.decrypt(ciphertext, keyHex, { iv: ivHex, mode: CryptoJS.mode.CTR, padding: CryptoJS.pad[padding], }); } return decrypted.toString(CryptoJS.enc.Utf8); }