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);
},
/**