mirror of
https://github.com/gchq/CyberChef.git
synced 2025-04-21 15:26:16 -04:00
Tidied up Base85 ops
This commit is contained in:
parent
c818370123
commit
8e9fece77d
3 changed files with 15 additions and 14 deletions
|
@ -6,6 +6,7 @@
|
|||
|
||||
import Operation from "../Operation";
|
||||
import OperationError from "../errors/OperationError";
|
||||
import Utils from "../Utils";
|
||||
import {alphabetName, ALPHABET_OPTIONS} from "../lib/Base85";
|
||||
|
||||
/**
|
||||
|
@ -21,7 +22,7 @@ class ToBase85 extends Operation {
|
|||
|
||||
this.name = "To Base85";
|
||||
this.module = "Default";
|
||||
this.description = "Base85 (similar to Base64) is a notation for encoding arbitrary byte data. It is usually more efficient that Base64.<br><br>This operation encodes data in an ASCII string (with an alphabet of your choosing, presets included).<br><br>e.g. <code>hello world</code> becomes <code>BOu!rD]j7BEbo7</code><br><br>Base85 is commonly used in Adobe's PostScript and PDF file formats.<br><br><strong>Options</strong><br><u>Alphabet</u><ul><li>Standard - The standard alphabet, referred to as Ascii85</li><li>Z85 (ZeroMQ) - A string-safe variant of Base85, which avoids quote marks and backslash characters</li><li>IPv6 - A variant of Base85 suitable for encoding IPv6 addresses (RFC 1924)</li></ul><u>Include delimiter</u><br>Adds a '<~' and '~>' delimiter to the start and end of the data. This is standard for Adobe's implementation of Base85.";
|
||||
this.description = "Base85 (also called Ascii85) is a notation for encoding arbitrary byte data. It is usually more efficient that Base64.<br><br>This operation encodes data in an ASCII string (with an alphabet of your choosing, presets included).<br><br>e.g. <code>hello world</code> becomes <code>BOu!rD]j7BEbo7</code><br><br>Base85 is commonly used in Adobe's PostScript and PDF file formats.<br><br><strong>Options</strong><br><u>Alphabet</u><ul><li>Standard - The standard alphabet, referred to as Ascii85</li><li>Z85 (ZeroMQ) - A string-safe variant of Base85, which avoids quote marks and backslash characters</li><li>IPv6 - A variant of Base85 suitable for encoding IPv6 addresses (RFC 1924)</li></ul><u>Include delimiter</u><br>Adds a '<~' and '~>' delimiter to the start and end of the data. This is standard for Adobe's implementation of Base85.";
|
||||
this.infoURL = "https://wikipedia.org/wiki/Ascii85";
|
||||
this.inputType = "byteArray";
|
||||
this.outputType = "string";
|
||||
|
@ -32,7 +33,7 @@ class ToBase85 extends Operation {
|
|||
value: ALPHABET_OPTIONS
|
||||
},
|
||||
{
|
||||
name: "Include Delimeter",
|
||||
name: "Include delimeter",
|
||||
type: "boolean",
|
||||
value: false
|
||||
}
|
||||
|
@ -45,13 +46,14 @@ class ToBase85 extends Operation {
|
|||
* @returns {string}
|
||||
*/
|
||||
run(input, args) {
|
||||
const alphabet = args[0] || ALPHABET_OPTIONS[0].value,
|
||||
encoding = alphabetName(alphabet);
|
||||
const alphabet = Utils.expandAlphRange(args[0]).join(""),
|
||||
encoding = alphabetName(alphabet),
|
||||
includeDelim = args[1];
|
||||
let result = "";
|
||||
|
||||
if (alphabet.length !== 85 ||
|
||||
[].unique.call(alphabet).length !== 85) {
|
||||
throw new OperationError("Error: alphabet must be of length 85");
|
||||
throw new OperationError("Error: Alphabet must be of length 85");
|
||||
}
|
||||
|
||||
if (input.length === 0) return "";
|
||||
|
@ -84,9 +86,7 @@ class ToBase85 extends Operation {
|
|||
}
|
||||
}
|
||||
|
||||
if (args[1] === true) result = "<~" + result + "~>";
|
||||
|
||||
return result;
|
||||
return includeDelim ? `<~${result}~>` : result;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue