{"record":{"id":"fd5a665ea7c9f990","repo":"sqlmapproject/sqlmap","slug":"rc4-hmac-ciphertext-too-short","errorCode":null,"errorMessage":"rc4-hmac ciphertext too short","messagePattern":"rc4-hmac ciphertext too short","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"extra/kerberos/crypto.py","lineNumber":245,"sourceCode":"        return _md4(password.encode(\"utf-16-le\"))\n\n    @staticmethod\n    def _usage(usage):\n        # RFC 4757 section 3: a couple of Kerberos usages map to Microsoft-specific values (per the\n        # published errata, usage 9 is NOT folded into 8 - only 3->8 and 23->13 apply)\n        return struct.pack(\"<I\", {3: 8, 23: 13}.get(usage, usage))\n\n    def encrypt(self, key, usage, plaintext, confounder=None):\n        if confounder is None:\n            confounder = os.urandom(8)\n        ki = hmac.new(key, self._usage(usage), hashlib.md5).digest()\n        cksum = hmac.new(ki, confounder + plaintext, hashlib.md5).digest()\n        ke = hmac.new(ki, cksum, hashlib.md5).digest()\n        return cksum + _rc4(ke, confounder + plaintext)\n\n    def decrypt(self, key, usage, ciphertext):\n        if len(ciphertext) < 24:\n            raise ValueError(\"rc4-hmac ciphertext too short\")\n        cksum, data = ciphertext[:16], ciphertext[16:]\n        ki = hmac.new(key, self._usage(usage), hashlib.md5).digest()\n        ke = hmac.new(ki, cksum, hashlib.md5).digest()\n        plaintext = _rc4(ke, data)\n        if not _eq(cksum, hmac.new(ki, plaintext, hashlib.md5).digest()):\n            raise ValueError(\"Kerberos integrity check failed (wrong key or corrupted ciphertext)\")\n        return plaintext[8:]                               # strip the 8-byte confounder\n\n    def checksum(self, key, usage, data):\n        ksign = hmac.new(key, b\"signaturekey\\x00\", hashlib.md5).digest()\n        return hmac.new(ksign, hashlib.md5(self._usage(usage) + bytes(data)).digest(), hashlib.md5).digest()\n\n# etype number -> enctype implementation\nENCTYPES = {\n    17: AESEnctype(16),\n    18: AESEnctype(32),\n    23: RC4Enctype(),\n}","sourceCodeStart":227,"sourceCodeEnd":263,"githubUrl":"https://github.com/sqlmapproject/sqlmap/blob/0a35b20e3953d341be6c7ac75ccb0b3362540c8d/extra/kerberos/crypto.py#L227-L263","documentation":"Error \"rc4-hmac ciphertext too short\" thrown in sqlmapproject/sqlmap.","triggerScenarios":"Thrown at extra/kerberos/crypto.py:245 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"0a35b20e3953d341be6c7ac75ccb0b3362540c8d","analyzedAt":"2026-08-26T23:02:52.002Z","schemaVersion":2},"datasetVersion":"2026-08-27T03:17:27.898Z"}