Skip to content

Commit

Permalink
Cleaned up Base62 ops and updated CHANGELOG
Browse files Browse the repository at this point in the history
  • Loading branch information
n1474335 committed Dec 18, 2018
1 parent 22454ae commit d89d791
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 23 deletions.
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
# Changelog
All major and minor version changes will be documented in this file. Details of patch-level version changes can be found in [commit messages](https://github.com/gchq/CyberChef/commits/master).


### [8.14.0] - 2018-12-18
- 'To Base62' and 'From Base62' operations added [@tcode2k16] | [#443]

### [8.13.0] - 2018-12-15
- 'A1Z26 Cipher Encode' and 'A1Z26 Cipher Decode' operations added [@jarmovanlenthe] | [#441]

Expand Down Expand Up @@ -69,6 +73,7 @@ All major and minor version changes will be documented in this file. Details of



[8.14.0]: https://github.com/gchq/CyberChef/releases/tag/v8.14.0
[8.13.0]: https://github.com/gchq/CyberChef/releases/tag/v8.13.0
[8.12.0]: https://github.com/gchq/CyberChef/releases/tag/v8.12.0
[8.11.0]: https://github.com/gchq/CyberChef/releases/tag/v8.11.0
Expand Down Expand Up @@ -101,6 +106,7 @@ All major and minor version changes will be documented in this file. Details of
[@klaxon1]: https://github.com/klaxon1
[@bwhitn]: https://github.com/bwhitn
[@jarmovanlenthe]: https://github.com/jarmovanlenthe
[@tcode2k16]: https://github.com/tcode2k16

[#95]: https://github.com/gchq/CyberChef/pull/299
[#173]: https://github.com/gchq/CyberChef/pull/173
Expand All @@ -125,3 +131,4 @@ All major and minor version changes will be documented in this file. Details of
[#394]: https://github.com/gchq/CyberChef/pull/394
[#428]: https://github.com/gchq/CyberChef/pull/428
[#441]: https://github.com/gchq/CyberChef/pull/441
[#443]: https://github.com/gchq/CyberChef/pull/443
4 changes: 2 additions & 2 deletions src/core/config/Categories.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,15 @@
"From Binary",
"To Octal",
"From Octal",
"To Base62",
"From Base62",
"To Base64",
"From Base64",
"Show Base64 offsets",
"To Base32",
"From Base32",
"To Base58",
"From Base58",
"To Base62",
"From Base62",
"To Base85",
"From Base85",
"To Base",
Expand Down
22 changes: 14 additions & 8 deletions src/core/operations/FromBase62.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -22,29 +22,35 @@ class FromBase62 extends Operation {

this.name = "From Base62";
this.module = "Default";
this.description = "decode base62 string";
this.infoURL = "https://en.wikipedia.org/wiki/List_of_numeral_systems";
this.description = "Base62 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers. The high number base results in shorter strings than with the decimal or hexadecimal system.";
this.infoURL = "https://wikipedia.org/wiki/List_of_numeral_systems";
this.inputType = "string";
this.outputType = "string";
this.args = [];
this.outputType = "byteArray";
this.args = [
{
name: "Alphabet",
type: "string",
value: "0-9A-Za-z"
}
];
}

/**
* @param {string} input
* @param {Object[]} args
* @returns {string}
* @returns {byteArray}
*/
run(input, args) {
if (input.length < 1) return "";
const ALPHABET = Utils.expandAlphRange("0-9A-Za-z").join("");
if (input.length < 1) return [];
const ALPHABET = Utils.expandAlphRange(args[0]).join("");
const BN = BigNumber.clone({ ALPHABET });

const re = new RegExp("[^" + ALPHABET.replace(/[[\]\\\-^$]/g, "\\$&") + "]", "g");
input = input.replace(re, "");

const number = new BN(input, 62);

return Utils.byteArrayToUtf8(Utils.convertToByteArray(number.toString(16), "Hex"));
return Utils.convertToByteArray(number.toString(16), "Hex");
}

}
Expand Down
18 changes: 11 additions & 7 deletions src/core/operations/ToBase62.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,17 @@ class ToBase62 extends Operation {

this.name = "To Base62";
this.module = "Default";
this.description = "encode string to base62";
this.description = "Base62 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers. The high number base results in shorter strings than with the decimal or hexadecimal system.";
this.infoURL = "https://en.wikipedia.org/wiki/List_of_numeral_systems";
this.inputType = "string";
this.inputType = "byteArray";
this.outputType = "string";
this.args = [];
this.args = [
{
name: "Alphabet",
type: "string",
value: "0-9A-Za-z"
}
];
}

/**
Expand All @@ -37,12 +43,10 @@ class ToBase62 extends Operation {
run(input, args) {
if (input.length < 1) return "";

const ALPHABET = Utils.expandAlphRange("0-9A-Za-z").join("");
const ALPHABET = Utils.expandAlphRange(args[0]).join("");
const BN = BigNumber.clone({ ALPHABET });

input = Utils.strToByteArray(input);
input = toHexFast(input);
input = input.toUpperCase();
input = toHexFast(input).toUpperCase();

const number = new BN(input, 16);

Expand Down
12 changes: 6 additions & 6 deletions test/tests/operations/Base62.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ TestRegister.addTests([
recipeConfig: [
{
op: "To Base62",
args: [],
args: ["0-9A-Za-z"],
},
],
},
Expand All @@ -28,7 +28,7 @@ TestRegister.addTests([
recipeConfig: [
{
op: "To Base62",
args: [],
args: ["0-9A-Za-z"],
},
],
},
Expand All @@ -39,7 +39,7 @@ TestRegister.addTests([
recipeConfig: [
{
op: "To Base62",
args: [],
args: ["0-9A-Za-z"],
},
],
},
Expand All @@ -50,7 +50,7 @@ TestRegister.addTests([
recipeConfig: [
{
op: "From Base62",
args: [],
args: ["0-9A-Za-z"],
},
],
},
Expand All @@ -61,7 +61,7 @@ TestRegister.addTests([
recipeConfig: [
{
op: "From Base62",
args: [],
args: ["0-9A-Za-z"],
},
],
},
Expand All @@ -72,7 +72,7 @@ TestRegister.addTests([
recipeConfig: [
{
op: "From Base62",
args: [],
args: ["0-9A-Za-z"],
},
],
}
Expand Down

0 comments on commit d89d791

Please sign in to comment.