From c046cf569578f42d548686d9af2893aa4a6ae6bc Mon Sep 17 00:00:00 2001 From: MikeCAT Date: Thu, 3 Nov 2022 00:21:20 +0900 Subject: [PATCH] have "From Hex" treat the delimiter as delimiter, not what to erase --- src/core/lib/Hex.mjs | 12 ++++++++---- tests/node/tests/operations.mjs | 12 ++++++------ 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/core/lib/Hex.mjs b/src/core/lib/Hex.mjs index b7e8e908..78e1ad58 100644 --- a/src/core/lib/Hex.mjs +++ b/src/core/lib/Hex.mjs @@ -105,13 +105,17 @@ export function fromHex(data, delim="Auto", byteLen=2) { throw new OperationError("Byte length must be a positive integer"); if (delim !== "None") { - const delimRegex = delim === "Auto" ? /[^a-f\d]|(0x)/gi : Utils.regexRep(delim); - data = data.replace(delimRegex, ""); + const delimRegex = delim === "Auto" ? /[^a-f\d]|0x/gi : Utils.regexRep(delim); + data = data.split(delimRegex); + } else { + data = [data]; } const output = []; - for (let i = 0; i < data.length; i += byteLen) { - output.push(parseInt(data.substr(i, byteLen), 16)); + for (let i = 0; i < data.length; i++) { + for (let j = 0; j < data[i].length; j += byteLen) { + output.push(parseInt(data[i].substr(j, byteLen), 16)); + } } return output; } diff --git a/tests/node/tests/operations.mjs b/tests/node/tests/operations.mjs index 783bd00a..8611ecb4 100644 --- a/tests/node/tests/operations.mjs +++ b/tests/node/tests/operations.mjs @@ -45,10 +45,10 @@ TestRegister.addApiTests([ const result = chef.ADD("sample input", { key: { string: "some key", - option: "Hex" + option: "utf8" } }); - assert.equal(result.toString(), "aO[^ZS\u000eW\\^cb"); + assert.equal(result.toString(), "\xe6\xd0\xda\xd5\x8c\xd0\x85\xe2\xe1\xdf\xe2\xd9"); }), @@ -121,10 +121,10 @@ Tiger-128`; const result = chef.AND("Scot-free", { key: { string: "Raining Cats and Dogs", - option: "Hex", + option: "utf8", } }); - assert.strictEqual(result.toString(), "\u0000\"M$(D E"); + assert.strictEqual(result.toString(), "Raid)fb A"); }), it("atBash Cipher", () => { @@ -371,10 +371,10 @@ color: white; }, salt: { string: "Market", - option: "Hex", + option: "utf8", }, }); - assert.strictEqual(result.toString(), "7c21a9f5063a4d62fb1050068245c181"); + assert.strictEqual(result.toString(), "4930d5d200e80f18c96b5550d13c6af8"); }), it("Derive PBKDF2 Key", () => {