cyberchef 9.47.1 → 9.47.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cyberchef",
|
|
3
|
-
"version": "9.47.
|
|
3
|
+
"version": "9.47.3",
|
|
4
4
|
"description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.",
|
|
5
5
|
"author": "n1474335 <n1474335@gmail.com>",
|
|
6
6
|
"homepage": "https://gchq.github.io/CyberChef",
|
|
@@ -6748,7 +6748,27 @@
|
|
|
6748
6748
|
"outputType": "string",
|
|
6749
6749
|
"flowControl": false,
|
|
6750
6750
|
"manualBake": false,
|
|
6751
|
-
"args": [
|
|
6751
|
+
"args": [
|
|
6752
|
+
{
|
|
6753
|
+
"name": "Length (bits)",
|
|
6754
|
+
"type": "option",
|
|
6755
|
+
"value": [
|
|
6756
|
+
"All",
|
|
6757
|
+
"128",
|
|
6758
|
+
"160",
|
|
6759
|
+
"224",
|
|
6760
|
+
"256",
|
|
6761
|
+
"320",
|
|
6762
|
+
"384",
|
|
6763
|
+
"512"
|
|
6764
|
+
]
|
|
6765
|
+
},
|
|
6766
|
+
{
|
|
6767
|
+
"name": "Include names",
|
|
6768
|
+
"type": "boolean",
|
|
6769
|
+
"value": true
|
|
6770
|
+
}
|
|
6771
|
+
]
|
|
6752
6772
|
},
|
|
6753
6773
|
"Generate HOTP": {
|
|
6754
6774
|
"module": "Default",
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @author n1474335 [n1474335@gmail.com]
|
|
3
|
+
* @author john19696 [john19696@protonmail.com]
|
|
3
4
|
* @copyright Crown Copyright 2016
|
|
4
5
|
* @license Apache-2.0
|
|
5
6
|
*/
|
|
@@ -33,6 +34,7 @@ import BLAKE2b from "./BLAKE2b.mjs";
|
|
|
33
34
|
import BLAKE2s from "./BLAKE2s.mjs";
|
|
34
35
|
import Streebog from "./Streebog.mjs";
|
|
35
36
|
import GOSTHash from "./GOSTHash.mjs";
|
|
37
|
+
import OperationError from "../errors/OperationError.mjs";
|
|
36
38
|
|
|
37
39
|
/**
|
|
38
40
|
* Generate all hashes operation
|
|
@@ -51,7 +53,73 @@ class GenerateAllHashes extends Operation {
|
|
|
51
53
|
this.infoURL = "https://wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions";
|
|
52
54
|
this.inputType = "ArrayBuffer";
|
|
53
55
|
this.outputType = "string";
|
|
54
|
-
this.args = [
|
|
56
|
+
this.args = [
|
|
57
|
+
{
|
|
58
|
+
name: "Length (bits)",
|
|
59
|
+
type: "option",
|
|
60
|
+
value: [
|
|
61
|
+
"All", "128", "160", "224", "256", "320", "384", "512"
|
|
62
|
+
]
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: "Include names",
|
|
66
|
+
type: "boolean",
|
|
67
|
+
value: true
|
|
68
|
+
},
|
|
69
|
+
];
|
|
70
|
+
this.hashes = [
|
|
71
|
+
{name: "MD2", algo: (new MD2()), inputType: "arrayBuffer", params: []},
|
|
72
|
+
{name: "MD4", algo: (new MD4()), inputType: "arrayBuffer", params: []},
|
|
73
|
+
{name: "MD5", algo: (new MD5()), inputType: "arrayBuffer", params: []},
|
|
74
|
+
{name: "MD6", algo: (new MD6()), inputType: "str", params: []},
|
|
75
|
+
{name: "SHA0", algo: (new SHA0()), inputType: "arrayBuffer", params: []},
|
|
76
|
+
{name: "SHA1", algo: (new SHA1()), inputType: "arrayBuffer", params: []},
|
|
77
|
+
{name: "SHA2 224", algo: (new SHA2()), inputType: "arrayBuffer", params: ["224"]},
|
|
78
|
+
{name: "SHA2 256", algo: (new SHA2()), inputType: "arrayBuffer", params: ["256"]},
|
|
79
|
+
{name: "SHA2 384", algo: (new SHA2()), inputType: "arrayBuffer", params: ["384"]},
|
|
80
|
+
{name: "SHA2 512", algo: (new SHA2()), inputType: "arrayBuffer", params: ["512"]},
|
|
81
|
+
{name: "SHA3 224", algo: (new SHA3()), inputType: "arrayBuffer", params: ["224"]},
|
|
82
|
+
{name: "SHA3 256", algo: (new SHA3()), inputType: "arrayBuffer", params: ["256"]},
|
|
83
|
+
{name: "SHA3 384", algo: (new SHA3()), inputType: "arrayBuffer", params: ["384"]},
|
|
84
|
+
{name: "SHA3 512", algo: (new SHA3()), inputType: "arrayBuffer", params: ["512"]},
|
|
85
|
+
{name: "Keccak 224", algo: (new Keccak()), inputType: "arrayBuffer", params: ["224"]},
|
|
86
|
+
{name: "Keccak 256", algo: (new Keccak()), inputType: "arrayBuffer", params: ["256"]},
|
|
87
|
+
{name: "Keccak 384", algo: (new Keccak()), inputType: "arrayBuffer", params: ["384"]},
|
|
88
|
+
{name: "Keccak 512", algo: (new Keccak()), inputType: "arrayBuffer", params: ["512"]},
|
|
89
|
+
{name: "Shake 128", algo: (new Shake()), inputType: "arrayBuffer", params: ["128", 256]},
|
|
90
|
+
{name: "Shake 256", algo: (new Shake()), inputType: "arrayBuffer", params: ["256", 512]},
|
|
91
|
+
{name: "RIPEMD-128", algo: (new RIPEMD()), inputType: "arrayBuffer", params: ["128"]},
|
|
92
|
+
{name: "RIPEMD-160", algo: (new RIPEMD()), inputType: "arrayBuffer", params: ["160"]},
|
|
93
|
+
{name: "RIPEMD-256", algo: (new RIPEMD()), inputType: "arrayBuffer", params: ["256"]},
|
|
94
|
+
{name: "RIPEMD-320", algo: (new RIPEMD()), inputType: "arrayBuffer", params: ["320"]},
|
|
95
|
+
{name: "HAS-160", algo: (new HAS160()), inputType: "arrayBuffer", params: []},
|
|
96
|
+
{name: "Whirlpool-0", algo: (new Whirlpool()), inputType: "arrayBuffer", params: ["Whirlpool-0"]},
|
|
97
|
+
{name: "Whirlpool-T", algo: (new Whirlpool()), inputType: "arrayBuffer", params: ["Whirlpool-T"]},
|
|
98
|
+
{name: "Whirlpool", algo: (new Whirlpool()), inputType: "arrayBuffer", params: ["Whirlpool"]},
|
|
99
|
+
{name: "BLAKE2b-128", algo: (new BLAKE2b), inputType: "arrayBuffer", params: ["128", "Hex", {string: "", option: "UTF8"}]},
|
|
100
|
+
{name: "BLAKE2b-160", algo: (new BLAKE2b), inputType: "arrayBuffer", params: ["160", "Hex", {string: "", option: "UTF8"}]},
|
|
101
|
+
{name: "BLAKE2b-256", algo: (new BLAKE2b), inputType: "arrayBuffer", params: ["256", "Hex", {string: "", option: "UTF8"}]},
|
|
102
|
+
{name: "BLAKE2b-384", algo: (new BLAKE2b), inputType: "arrayBuffer", params: ["384", "Hex", {string: "", option: "UTF8"}]},
|
|
103
|
+
{name: "BLAKE2b-512", algo: (new BLAKE2b), inputType: "arrayBuffer", params: ["512", "Hex", {string: "", option: "UTF8"}]},
|
|
104
|
+
{name: "BLAKE2s-128", algo: (new BLAKE2s), inputType: "arrayBuffer", params: ["128", "Hex", {string: "", option: "UTF8"}]},
|
|
105
|
+
{name: "BLAKE2s-160", algo: (new BLAKE2s), inputType: "arrayBuffer", params: ["160", "Hex", {string: "", option: "UTF8"}]},
|
|
106
|
+
{name: "BLAKE2s-256", algo: (new BLAKE2s), inputType: "arrayBuffer", params: ["256", "Hex", {string: "", option: "UTF8"}]},
|
|
107
|
+
{name: "Streebog-256", algo: (new Streebog), inputType: "arrayBuffer", params: ["256"]},
|
|
108
|
+
{name: "Streebog-512", algo: (new Streebog), inputType: "arrayBuffer", params: ["512"]},
|
|
109
|
+
{name: "GOST", algo: (new GOSTHash), inputType: "arrayBuffer", params: ["D-A"]},
|
|
110
|
+
{name: "SSDEEP", algo: (new SSDEEP()), inputType: "str"},
|
|
111
|
+
{name: "CTPH", algo: (new CTPH()), inputType: "str"}
|
|
112
|
+
];
|
|
113
|
+
this.checksums = [
|
|
114
|
+
{name: "Fletcher-8", algo: (new Fletcher8Checksum), inputType: "byteArray", params: []},
|
|
115
|
+
{name: "Fletcher-16", algo: (new Fletcher16Checksum), inputType: "byteArray", params: []},
|
|
116
|
+
{name: "Fletcher-32", algo: (new Fletcher32Checksum), inputType: "byteArray", params: []},
|
|
117
|
+
{name: "Fletcher-64", algo: (new Fletcher64Checksum), inputType: "byteArray", params: []},
|
|
118
|
+
{name: "Adler-32", algo: (new Adler32Checksum), inputType: "byteArray", params: []},
|
|
119
|
+
{name: "CRC-8", algo: (new CRC8Checksum), inputType: "arrayBuffer", params: ["CRC-8"]},
|
|
120
|
+
{name: "CRC-16", algo: (new CRC16Checksum), inputType: "arrayBuffer", params: []},
|
|
121
|
+
{name: "CRC-32", algo: (new CRC32Checksum), inputType: "arrayBuffer", params: []}
|
|
122
|
+
];
|
|
55
123
|
}
|
|
56
124
|
|
|
57
125
|
/**
|
|
@@ -60,63 +128,74 @@ class GenerateAllHashes extends Operation {
|
|
|
60
128
|
* @returns {string}
|
|
61
129
|
*/
|
|
62
130
|
run(input, args) {
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
"\nKeccak 384: " + (new Keccak()).run(arrayBuffer, ["384"]) +
|
|
83
|
-
"\nKeccak 512: " + (new Keccak()).run(arrayBuffer, ["512"]) +
|
|
84
|
-
"\nShake 128: " + (new Shake()).run(arrayBuffer, ["128", 256]) +
|
|
85
|
-
"\nShake 256: " + (new Shake()).run(arrayBuffer, ["256", 512]) +
|
|
86
|
-
"\nRIPEMD-128: " + (new RIPEMD()).run(arrayBuffer, ["128"]) +
|
|
87
|
-
"\nRIPEMD-160: " + (new RIPEMD()).run(arrayBuffer, ["160"]) +
|
|
88
|
-
"\nRIPEMD-256: " + (new RIPEMD()).run(arrayBuffer, ["256"]) +
|
|
89
|
-
"\nRIPEMD-320: " + (new RIPEMD()).run(arrayBuffer, ["320"]) +
|
|
90
|
-
"\nHAS-160: " + (new HAS160()).run(arrayBuffer, []) +
|
|
91
|
-
"\nWhirlpool-0: " + (new Whirlpool()).run(arrayBuffer, ["Whirlpool-0"]) +
|
|
92
|
-
"\nWhirlpool-T: " + (new Whirlpool()).run(arrayBuffer, ["Whirlpool-T"]) +
|
|
93
|
-
"\nWhirlpool: " + (new Whirlpool()).run(arrayBuffer, ["Whirlpool"]) +
|
|
94
|
-
"\nBLAKE2b-128: " + (new BLAKE2b).run(arrayBuffer, ["128", "Hex", {string: "", option: "UTF8"}]) +
|
|
95
|
-
"\nBLAKE2b-160: " + (new BLAKE2b).run(arrayBuffer, ["160", "Hex", {string: "", option: "UTF8"}]) +
|
|
96
|
-
"\nBLAKE2b-256: " + (new BLAKE2b).run(arrayBuffer, ["256", "Hex", {string: "", option: "UTF8"}]) +
|
|
97
|
-
"\nBLAKE2b-384: " + (new BLAKE2b).run(arrayBuffer, ["384", "Hex", {string: "", option: "UTF8"}]) +
|
|
98
|
-
"\nBLAKE2b-512: " + (new BLAKE2b).run(arrayBuffer, ["512", "Hex", {string: "", option: "UTF8"}]) +
|
|
99
|
-
"\nBLAKE2s-128: " + (new BLAKE2s).run(arrayBuffer, ["128", "Hex", {string: "", option: "UTF8"}]) +
|
|
100
|
-
"\nBLAKE2s-160: " + (new BLAKE2s).run(arrayBuffer, ["160", "Hex", {string: "", option: "UTF8"}]) +
|
|
101
|
-
"\nBLAKE2s-256: " + (new BLAKE2s).run(arrayBuffer, ["256", "Hex", {string: "", option: "UTF8"}]) +
|
|
102
|
-
"\nStreebog-256: " + (new Streebog).run(arrayBuffer, ["256"]) +
|
|
103
|
-
"\nStreebog-512: " + (new Streebog).run(arrayBuffer, ["512"]) +
|
|
104
|
-
"\nGOST: " + (new GOSTHash).run(arrayBuffer, ["D-A"]) +
|
|
105
|
-
"\nSSDEEP: " + (new SSDEEP()).run(str) +
|
|
106
|
-
"\nCTPH: " + (new CTPH()).run(str) +
|
|
107
|
-
"\n\nChecksums:" +
|
|
108
|
-
"\nFletcher-8: " + (new Fletcher8Checksum).run(byteArray, []) +
|
|
109
|
-
"\nFletcher-16: " + (new Fletcher16Checksum).run(byteArray, []) +
|
|
110
|
-
"\nFletcher-32: " + (new Fletcher32Checksum).run(byteArray, []) +
|
|
111
|
-
"\nFletcher-64: " + (new Fletcher64Checksum).run(byteArray, []) +
|
|
112
|
-
"\nAdler-32: " + (new Adler32Checksum).run(byteArray, []) +
|
|
113
|
-
"\nCRC-8: " + (new CRC8Checksum).run(arrayBuffer, ["CRC-8"]) +
|
|
114
|
-
"\nCRC-16: " + (new CRC16Checksum).run(arrayBuffer, []) +
|
|
115
|
-
"\nCRC-32: " + (new CRC32Checksum).run(arrayBuffer, []);
|
|
131
|
+
const [length, includeNames] = args;
|
|
132
|
+
this.inputArrayBuffer = input;
|
|
133
|
+
this.inputStr = Utils.arrayBufferToStr(input, false);
|
|
134
|
+
this.inputByteArray = new Uint8Array(input);
|
|
135
|
+
|
|
136
|
+
let digest, output = "";
|
|
137
|
+
// iterate over each of the hashes
|
|
138
|
+
this.hashes.forEach(hash => {
|
|
139
|
+
digest = this.executeAlgo(hash.algo, hash.inputType, hash.params || []);
|
|
140
|
+
output += this.formatDigest(digest, length, includeNames, hash.name);
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
if (length === "All") {
|
|
144
|
+
output += "\nChecksums:\n";
|
|
145
|
+
this.checksums.forEach(checksum => {
|
|
146
|
+
digest = this.executeAlgo(checksum.algo, checksum.inputType, checksum.params || []);
|
|
147
|
+
output += this.formatDigest(digest, length, includeNames, checksum.name);
|
|
148
|
+
});
|
|
149
|
+
}
|
|
116
150
|
|
|
117
151
|
return output;
|
|
118
152
|
}
|
|
119
153
|
|
|
154
|
+
/**
|
|
155
|
+
* Executes a hash or checksum algorithm
|
|
156
|
+
*
|
|
157
|
+
* @param {Function} algo - The hash or checksum algorithm
|
|
158
|
+
* @param {string} inputType
|
|
159
|
+
* @param {Object[]} [params=[]]
|
|
160
|
+
* @returns {string}
|
|
161
|
+
*/
|
|
162
|
+
executeAlgo(algo, inputType, params=[]) {
|
|
163
|
+
let digest = null;
|
|
164
|
+
switch (inputType) {
|
|
165
|
+
case "arrayBuffer":
|
|
166
|
+
digest = algo.run(this.inputArrayBuffer, params);
|
|
167
|
+
break;
|
|
168
|
+
case "str":
|
|
169
|
+
digest = algo.run(this.inputStr, params);
|
|
170
|
+
break;
|
|
171
|
+
case "byteArray":
|
|
172
|
+
digest = algo.run(this.inputByteArray, params);
|
|
173
|
+
break;
|
|
174
|
+
default:
|
|
175
|
+
throw new OperationError("Unknown hash input type: " + inputType);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
return digest;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Formats the digest depending on user-specified arguments
|
|
183
|
+
* @param {string} digest
|
|
184
|
+
* @param {string} length
|
|
185
|
+
* @param {boolean} includeNames
|
|
186
|
+
* @param {string} name
|
|
187
|
+
* @returns {string}
|
|
188
|
+
*/
|
|
189
|
+
formatDigest(digest, length, includeNames, name) {
|
|
190
|
+
if (length !== "All" && (digest.length * 4) !== parseInt(length, 10))
|
|
191
|
+
return "";
|
|
192
|
+
|
|
193
|
+
if (!includeNames)
|
|
194
|
+
return digest + "\n";
|
|
195
|
+
|
|
196
|
+
return `${name}:${" ".repeat(13-name.length)}${digest}\n`;
|
|
197
|
+
}
|
|
198
|
+
|
|
120
199
|
}
|
|
121
200
|
|
|
122
201
|
export default GenerateAllHashes;
|
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
import Operation from "../Operation.mjs";
|
|
8
8
|
import {INFLATE_BUFFER_TYPE} from "../lib/Zlib.mjs";
|
|
9
9
|
import rawinflate from "zlibjs/bin/rawinflate.min.js";
|
|
10
|
-
import OperationError from "../errors/OperationError.mjs";
|
|
11
10
|
|
|
12
11
|
const Zlib = rawinflate.Zlib;
|
|
13
12
|
|
|
@@ -83,25 +82,6 @@ class RawInflate extends Operation {
|
|
|
83
82
|
}),
|
|
84
83
|
result = new Uint8Array(inflate.decompress());
|
|
85
84
|
|
|
86
|
-
// Raw Inflate sometimes messes up and returns nonsense like this:
|
|
87
|
-
// ]....]....]....]....]....]....]....]....]....]....]....]....]....]...
|
|
88
|
-
// e.g. Input data of [8b, 1d, dc, 44]
|
|
89
|
-
// Look for the first two square brackets:
|
|
90
|
-
if (result.length > 158 && result[0] === 93 && result[5] === 93) {
|
|
91
|
-
// If the first two square brackets are there, check that the others
|
|
92
|
-
// are also there. If they are, throw an error. If not, continue.
|
|
93
|
-
let valid = false;
|
|
94
|
-
for (let i = 0; i < 155; i += 5) {
|
|
95
|
-
if (result[i] !== 93) {
|
|
96
|
-
valid = true;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
if (!valid) {
|
|
101
|
-
throw new OperationError("Error: Unable to inflate data");
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
// This seems to be the easiest way...
|
|
105
85
|
return result.buffer;
|
|
106
86
|
}
|
|
107
87
|
|
|
@@ -45,6 +45,7 @@ import "./tests/DateTime.mjs";
|
|
|
45
45
|
import "./tests/ExtractEmailAddresses.mjs";
|
|
46
46
|
import "./tests/Fork.mjs";
|
|
47
47
|
import "./tests/FromDecimal.mjs";
|
|
48
|
+
import "./tests/GenerateAllHashes.mjs";
|
|
48
49
|
import "./tests/Gzip.mjs";
|
|
49
50
|
import "./tests/Gunzip.mjs";
|
|
50
51
|
import "./tests/Hash.mjs";
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GenerateAllHashes tests.
|
|
3
|
+
*
|
|
4
|
+
* @author john19696 [john19696@protonmail.com]
|
|
5
|
+
* @copyright Crown Copyright 2022
|
|
6
|
+
* @license Apache-2.0
|
|
7
|
+
*/
|
|
8
|
+
import TestRegister from "../../lib/TestRegister.mjs";
|
|
9
|
+
|
|
10
|
+
TestRegister.addTests([
|
|
11
|
+
{
|
|
12
|
+
name: "Full generate all hashes",
|
|
13
|
+
input: "test",
|
|
14
|
+
expectedOutput: `MD2: dd34716876364a02d0195e2fb9ae2d1b
|
|
15
|
+
MD4: db346d691d7acc4dc2625db19f9e3f52
|
|
16
|
+
MD5: 098f6bcd4621d373cade4e832627b4f6
|
|
17
|
+
MD6: 93c8a7d0ff132f325138a82b2baa98c12a7c9ac982feb6c5b310a1ca713615bd
|
|
18
|
+
SHA0: f8d3b312442a67706057aeb45b983221afb4f035
|
|
19
|
+
SHA1: a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
|
|
20
|
+
SHA2 224: 90a3ed9e32b2aaf4c61c410eb925426119e1a9dc53d4286ade99a809
|
|
21
|
+
SHA2 256: 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
|
|
22
|
+
SHA2 384: 768412320f7b0aa5812fce428dc4706b3cae50e02a64caa16a782249bfe8efc4b7ef1ccb126255d196047dfedf17a0a9
|
|
23
|
+
SHA2 512: ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff
|
|
24
|
+
SHA3 224: 3797bf0afbbfca4a7bbba7602a2b552746876517a7f9b7ce2db0ae7b
|
|
25
|
+
SHA3 256: 36f028580bb02cc8272a9a020f4200e346e276ae664e45ee80745574e2f5ab80
|
|
26
|
+
SHA3 384: e516dabb23b6e30026863543282780a3ae0dccf05551cf0295178d7ff0f1b41eecb9db3ff219007c4e097260d58621bd
|
|
27
|
+
SHA3 512: 9ece086e9bac491fac5c1d1046ca11d737b92a2b2ebd93f005d7b710110c0a678288166e7fbe796883a4f2e9b3ca9f484f521d0ce464345cc1aec96779149c14
|
|
28
|
+
Keccak 224: 3be30a9ff64f34a5861116c5198987ad780165f8366e67aff4760b5e
|
|
29
|
+
Keccak 256: 9c22ff5f21f0b81b113e63f7db6da94fedef11b2119b4088b89664fb9a3cb658
|
|
30
|
+
Keccak 384: 53d0ba137307d4c2f9b6674c83edbd58b70c0f4340133ed0adc6fba1d2478a6a03b7788229e775d2de8ae8c0759d0527
|
|
31
|
+
Keccak 512: 1e2e9fc2002b002d75198b7503210c05a1baac4560916a3c6d93bcce3a50d7f00fd395bf1647b9abb8d1afcc9c76c289b0c9383ba386a956da4b38934417789e
|
|
32
|
+
Shake 128: d3b0aa9cd8b7255622cebc631e867d4093d6f6010191a53973c45fec9b07c774
|
|
33
|
+
Shake 256: b54ff7255705a71ee2925e4a3e30e41aed489a579d5595e0df13e32e1e4dd202a7c7f68b31d6418d9845eb4d757adda6ab189e1bb340db818e5b3bc725d992fa
|
|
34
|
+
RIPEMD-128: f1abb5083c9ff8a9dbbca9cd2b11fead
|
|
35
|
+
RIPEMD-160: 5e52fee47e6b070565f74372468cdc699de89107
|
|
36
|
+
RIPEMD-256: fe0289110d07daeee9d9500e14c57787d9083f6ba10e6bcb256f86bb4fe7b981
|
|
37
|
+
RIPEMD-320: 3b0a2e841e589cf583634a5dd265d2b5d497c4cc44b241e34e0f62d03e98c1b9dc72970b9bc20eb5
|
|
38
|
+
HAS-160: cb15e491eec6e769771d1f811315139c93071084
|
|
39
|
+
Whirlpool-0: d50ff71342b521974bae166539871922669afcfc7181250ebbae015c317ebb797173a69e7a05afd11099a9f0918159cd5bc88434d3ca44513d7263caea9244fe
|
|
40
|
+
Whirlpool-T: e6b4aa087751b4428171777f1893ba585404c7e0171787720eba0d8bccd710dc2c42f874c572bfae4cedabf50f2c80bf923805d4e31c504b86ca3bc59265e7dd
|
|
41
|
+
Whirlpool: b913d5bbb8e461c2c5961cbe0edcdadfd29f068225ceb37da6defcf89849368f8c6c2eb6a4c4ac75775d032a0ecfdfe8550573062b653fe92fc7b8fb3b7be8d6
|
|
42
|
+
BLAKE2b-128: 44a8995dd50b6657a037a7839304535b
|
|
43
|
+
BLAKE2b-160: a34fc3b6d2cce8beb3216c2bbb5e55739e8121ed
|
|
44
|
+
BLAKE2b-256: 928b20366943e2afd11ebc0eae2e53a93bf177a4fcf35bcc64d503704e65e202
|
|
45
|
+
BLAKE2b-384: 8a84b8666c8fcfb69f2ec41f578d7c85fbdb504ea6510fb05b50fcbf7ed8153c77943bc2da73abb136834e1a0d4f22cb
|
|
46
|
+
BLAKE2b-512: a71079d42853dea26e453004338670a53814b78137ffbed07603a41d76a483aa9bc33b582f77d30a65e6f29a896c0411f38312e1d66e0bf16386c86a89bea572
|
|
47
|
+
BLAKE2s-128: e9ddd9926b9dcb382e09be39ba403d2c
|
|
48
|
+
BLAKE2s-160: d6197dabec2bd6f4ff303b8e519e8f15d42a453d
|
|
49
|
+
BLAKE2s-256: f308fc02ce9172ad02a7d75800ecfc027109bc67987ea32aba9b8dcc7b10150e
|
|
50
|
+
Streebog-256: 12a50838191b5504f1e5f2fd078714cf6b592b9d29af99d0b10d8d02881c3857
|
|
51
|
+
Streebog-512: 7200bf5dea560f0d7960d07fdc8874ad9f3b86ece2e45f5502ae2e176f2c928e0e581152281f5aee818318bed7cbe6aa69999589234723ceb33175598365b5c8
|
|
52
|
+
GOST: ee67303696d205ddd2b2363e8e01b4b7199a80957d94d7678eaad3fc834c5a27
|
|
53
|
+
SSDEEP: 3:Hn:Hn
|
|
54
|
+
CTPH: A:E:E
|
|
55
|
+
|
|
56
|
+
Checksums:
|
|
57
|
+
Fletcher-8: 3d
|
|
58
|
+
Fletcher-16: 5dc1
|
|
59
|
+
Fletcher-32: 045901c0
|
|
60
|
+
Fletcher-64: 00000459000001c0
|
|
61
|
+
Adler-32: 045d01c1
|
|
62
|
+
CRC-8: b9
|
|
63
|
+
CRC-16: f82e
|
|
64
|
+
CRC-32: d87f7e0c
|
|
65
|
+
`,
|
|
66
|
+
recipeConfig: [
|
|
67
|
+
{
|
|
68
|
+
"op": "Generate all hashes",
|
|
69
|
+
"args": ["All", true]
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: "Hashes with length 32",
|
|
75
|
+
input: "test",
|
|
76
|
+
expectedOutput: `MD2: dd34716876364a02d0195e2fb9ae2d1b
|
|
77
|
+
MD4: db346d691d7acc4dc2625db19f9e3f52
|
|
78
|
+
MD5: 098f6bcd4621d373cade4e832627b4f6
|
|
79
|
+
RIPEMD-128: f1abb5083c9ff8a9dbbca9cd2b11fead
|
|
80
|
+
BLAKE2b-128: 44a8995dd50b6657a037a7839304535b
|
|
81
|
+
BLAKE2s-128: e9ddd9926b9dcb382e09be39ba403d2c
|
|
82
|
+
`,
|
|
83
|
+
recipeConfig: [
|
|
84
|
+
{
|
|
85
|
+
"op": "Generate all hashes",
|
|
86
|
+
"args": ["128", true]
|
|
87
|
+
}
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
name: "Hashes without names",
|
|
92
|
+
input: "test",
|
|
93
|
+
expectedOutput: `93c8a7d0ff132f325138a82b2baa98c12a7c9ac982feb6c5b310a1ca713615bd
|
|
94
|
+
9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
|
|
95
|
+
36f028580bb02cc8272a9a020f4200e346e276ae664e45ee80745574e2f5ab80
|
|
96
|
+
9c22ff5f21f0b81b113e63f7db6da94fedef11b2119b4088b89664fb9a3cb658
|
|
97
|
+
d3b0aa9cd8b7255622cebc631e867d4093d6f6010191a53973c45fec9b07c774
|
|
98
|
+
fe0289110d07daeee9d9500e14c57787d9083f6ba10e6bcb256f86bb4fe7b981
|
|
99
|
+
928b20366943e2afd11ebc0eae2e53a93bf177a4fcf35bcc64d503704e65e202
|
|
100
|
+
f308fc02ce9172ad02a7d75800ecfc027109bc67987ea32aba9b8dcc7b10150e
|
|
101
|
+
12a50838191b5504f1e5f2fd078714cf6b592b9d29af99d0b10d8d02881c3857
|
|
102
|
+
ee67303696d205ddd2b2363e8e01b4b7199a80957d94d7678eaad3fc834c5a27
|
|
103
|
+
`,
|
|
104
|
+
recipeConfig: [
|
|
105
|
+
{
|
|
106
|
+
"op": "Generate all hashes",
|
|
107
|
+
"args": ["256", false]
|
|
108
|
+
}
|
|
109
|
+
]
|
|
110
|
+
}
|
|
111
|
+
]);
|