From b1edcffcc0ff5e457a804e9671e7ab0e5e3d9c05 Mon Sep 17 00:00:00 2001 From: Andy Wang Date: Thu, 26 Sep 2019 19:24:10 +0100 Subject: [PATCH] Left pad iv --- src/core/operations/DESDecrypt.mjs | 6 ++++++ src/core/operations/DESEncrypt.mjs | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/src/core/operations/DESDecrypt.mjs b/src/core/operations/DESDecrypt.mjs index ec4aa2a7..58000873 100644 --- a/src/core/operations/DESDecrypt.mjs +++ b/src/core/operations/DESDecrypt.mjs @@ -84,6 +84,12 @@ Triple DES uses a key length of 24 bytes (192 bits).`); const blockSize = decipher.mode.blockSize var blockOutputs = forge.util.createBuffer(); var numBlocks = input.length % blockSize === 0 ? input.length >> 3 : (input.length >> 3) + 1 + if (iv.length < blockSize) { + var ivLen = iv.length + for (var i=0; i < blockSize - ivLen; i++){ + iv.unshift(0) + } + } for (var i=0; i < numBlocks; i++) { decipher.start({iv: iv}) decipher.update(forge.util.createBuffer().fillWithByte(0,blockSize)) diff --git a/src/core/operations/DESEncrypt.mjs b/src/core/operations/DESEncrypt.mjs index 5679ee60..7f62c7ee 100644 --- a/src/core/operations/DESEncrypt.mjs +++ b/src/core/operations/DESEncrypt.mjs @@ -83,6 +83,12 @@ Triple DES uses a key length of 24 bytes (192 bits).`); const blockSize = cipher.mode.blockSize var blockOutputs = forge.util.createBuffer(); var numBlocks = input.length % blockSize === 0 ? input.length >> 3 : (input.length >> 3) + 1 + if (iv.length < blockSize) { + var ivLen = iv.length + for (var i=0; i < blockSize - ivLen; i++){ + iv.unshift(0) + } + } for (var i=0; i < numBlocks; i++) { cipher.start({iv: iv}) cipher.update(forge.util.createBuffer().fillWithByte(0,blockSize))