gchq/CyberChef · error · OperationError
Incorrect input length. Must be a multiple of the block…
Error message
Incorrect input length. Must be a multiple of the block size.
What it means
Friendlier rewrite produced by GOST Key Wrap when crypto-gost-js throws "Invalid typed array length" during `cipher.wrapKey`. That underlying error arises when the input key material to be wrapped is not a whole multiple of the block size (8 bytes Magma, 16 bytes Kuznyechik), so the wrapping buffer allocation fails. The op detects that signature and rewrites it to this message.
Solutions
- Ensure the key-material hex decodes to a multiple of 8 (Magma) or 16 (Kuznyechik) bytes.
- Strip whitespace/newlines from input.
- Use the same block size variant intended for the key material.
Example fix
// before keyMaterial = "aabbcc"; // 3 bytes // after keyMaterial = "aabbccddeeff00112233445566778899"; // 16 bytes
Defensive patterns
Strategy: validation
Validate before calling
const blockBytes = (versionNum === 2015 && blockLength === 128) ? 16 : 8;
const inputBytes = hexInput.length / 2;
if (!Number.isInteger(inputBytes) || inputBytes % blockBytes !== 0) {
throw new Error(`Key material must be a multiple of ${blockBytes} bytes`);
} Type guard
function isBlockMultiple(hex, blockBytes){const b=hex.length/2;return Number.isInteger(b)&&b%blockBytes===0;} Try / catch
try { chef.bake(input, recipe); }
catch (e) {
if (/multiple of the block size/i.test(e.message||"")) warn("Key material length is not a block multiple");
else throw e;
} Prevention
- Strip whitespace/newlines from hex key material.
- Match the wrap algorithm's block size to the key material size.
When it happens
Trigger: Wrapping key material whose byte length is not a multiple of the block size; odd-length hex input causing a half-byte shift; algorithm/block-size mismatch; truncated input.
Common situations: Copy-paste truncation; whitespace in hex; wrong algorithm variant selected relative to the key material size.
Related errors
- Incorrect input length. Must be a multiple of the block…
- ${err}
- ${err}
- Unknown algorithm version
- Unknown algorithm version
AI-assisted analysis of gchq/CyberChef@4290ea7539 (2026-08-13).
Data as JSON: /api/errors/ef4c28d8d071c674.
Report an issue: GitHub.
Appendix: source
Thrown at src/core/operations/GOSTKeyWrap.mjs:134
const algorithm = {
version: versionNum,
length: blockLength,
mode: "KW",
sBox: sBoxVal,
keyWrapping: keyWrapping
};
try {
const Hex = CryptoGost.coding.Hex;
algorithm.ukm = Hex.decode(ukm);
const cipher = GostEngine.getGostCipher(algorithm);
const out = Hex.encode(cipher.wrapKey(Hex.decode(key), Hex.decode(input)));
return outputType === "Hex" ? out : Utils.byteArrayToChars(fromHex(out));
} catch (err) {
if (err.toString().includes("Invalid typed array length")) {
throw new OperationError("Incorrect input length. Must be a multiple of the block size.");
}
throw new OperationError(err);
}
}
}
export default GOSTKeyWrap;
View on GitHub (pinned to 4290ea7539)