Added Fletcher-8, -32 and -64 checksum operations. Closes #51.

This commit is contained in:
n1474335 2017-01-17 15:52:24 +00:00
parent cddd349090
commit 3c3f5d9dcd
9 changed files with 120 additions and 45 deletions

View file

@ -9,6 +9,26 @@
*/
var Checksum = {
/**
* Fletcher-8 Checksum operation.
*
* @param {byte_array} input
* @param {Object[]} args
* @returns {string}
*/
run_fletcher8: function(input, args) {
var a = 0,
b = 0;
for (var i = 0; i < input.length; i++) {
a = (a + input[i]) % 0xf;
b = (b + a) % 0xf;
}
return Utils.hex(((b << 4) | a) >>> 0, 2);
},
/**
* Fletcher-16 Checksum operation.
*
@ -27,6 +47,46 @@ var Checksum = {
return Utils.hex(((b << 8) | a) >>> 0, 4);
},
/**
* Fletcher-32 Checksum operation.
*
* @param {byte_array} input
* @param {Object[]} args
* @returns {string}
*/
run_fletcher32: function(input, args) {
var a = 0,
b = 0;
for (var i = 0; i < input.length; i++) {
a = (a + input[i]) % 0xffff;
b = (b + a) % 0xffff;
}
return Utils.hex(((b << 16) | a) >>> 0, 8);
},
/**
* Fletcher-64 Checksum operation.
*
* @param {byte_array} input
* @param {Object[]} args
* @returns {string}
*/
run_fletcher64: function(input, args) {
var a = 0,
b = 0;
for (var i = 0; i < input.length; i++) {
a = (a + input[i]) % 0xffffffff;
b = (b + a) % 0xffffffff;
}
return Utils.hex(b >>> 0, 8) + Utils.hex(a >>> 0, 8);
},
/**

View file

@ -215,7 +215,10 @@ var Hash = {
"\nSHA3 512: " + Hash.run_sha3(input, ["512"]) +
"\nRIPEMD-160: " + Hash.run_ripemd160(input, []) +
"\n\nChecksums:" +
"\nFletcher-8: " + Checksum.run_fletcher8(byte_array, []) +
"\nFletcher-16: " + Checksum.run_fletcher16(byte_array, []) +
"\nFletcher-32: " + Checksum.run_fletcher32(byte_array, []) +
"\nFletcher-64: " + Checksum.run_fletcher64(byte_array, []) +
"\nAdler-32: " + Checksum.run_adler32(byte_array, []) +
"\nCRC-32: " + Checksum.run_crc32(byte_array, []);