Selaa lähdekoodia

Merge branch 'PenguinGeorge-cascadexor-new'

n1474335 6 vuotta sitten
vanhempi
commit
88e603bbf1
3 muutettua tiedostoa jossa 19 lisäystä ja 8 poistoa
  1. 16 6
      package-lock.json
  2. 1 0
      src/core/lib/BitwiseOp.mjs
  3. 2 2
      src/core/operations/XOR.mjs

+ 16 - 6
package-lock.json

@@ -4197,12 +4197,14 @@
         "balanced-match": {
           "version": "1.0.0",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "brace-expansion": {
           "version": "1.1.11",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "balanced-match": "^1.0.0",
             "concat-map": "0.0.1"
@@ -4217,17 +4219,20 @@
         "code-point-at": {
           "version": "1.1.0",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "concat-map": {
           "version": "0.0.1",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "console-control-strings": {
           "version": "1.1.0",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "core-util-is": {
           "version": "1.0.2",
@@ -4344,7 +4349,8 @@
         "inherits": {
           "version": "2.0.3",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "ini": {
           "version": "1.3.5",
@@ -4356,6 +4362,7 @@
           "version": "1.0.0",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "number-is-nan": "^1.0.0"
           }
@@ -4370,6 +4377,7 @@
           "version": "3.0.4",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "brace-expansion": "^1.1.7"
           }
@@ -4481,7 +4489,8 @@
         "number-is-nan": {
           "version": "1.0.1",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "object-assign": {
           "version": "4.1.1",
@@ -4614,6 +4623,7 @@
           "version": "1.0.2",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "code-point-at": "^1.0.0",
             "is-fullwidth-code-point": "^1.0.0",

+ 1 - 0
src/core/lib/BitwiseOp.mjs

@@ -25,6 +25,7 @@ export function bitOp (input, key, func, nullPreserving, scheme) {
 
     for (let i = 0; i < input.length; i++) {
         k = key[i % key.length];
+        if (scheme === "Cascade") k = input[i + 1] || 0;
         o = input[i];
         x = nullPreserving && (o === 0 || o === k) ? o : func(o, k);
         result.push(x);

+ 2 - 2
src/core/operations/XOR.mjs

@@ -21,7 +21,7 @@ class XOR extends Operation {
 
         this.name = "XOR";
         this.module = "Default";
-        this.description = "XOR the input with the given key.<br>e.g. <code>fe023da5</code><br><br><strong>Options</strong><br><u>Null preserving:</u> If the current byte is 0x00 or the same as the key, skip it.<br><br><u>Scheme:</u><ul><li>Standard - key is unchanged after each round</li><li>Input differential - key is set to the value of the previous unprocessed byte</li><li>Output differential - key is set to the value of the previous processed byte</li></ul>";
+        this.description = "XOR the input with the given key.<br>e.g. <code>fe023da5</code><br><br><strong>Options</strong><br><u>Null preserving:</u> If the current byte is 0x00 or the same as the key, skip it.<br><br><u>Scheme:</u><ul><li>Standard - key is unchanged after each round</li><li>Input differential - key is set to the value of the previous unprocessed byte</li><li>Output differential - key is set to the value of the previous processed byte</li><li>Cascade - key is set to the input byte shifted by one</li></ul>";
         this.infoURL = "https://wikipedia.org/wiki/XOR";
         this.inputType = "byteArray";
         this.outputType = "byteArray";
@@ -35,7 +35,7 @@ class XOR extends Operation {
             {
                 "name": "Scheme",
                 "type": "option",
-                "value": ["Standard", "Input differential", "Output differential"]
+                "value": ["Standard", "Input differential", "Output differential", "Cascade"]
             },
             {
                 "name": "Null preserving",