Bläddra i källkod

XOR operation now supports both input and output differentials. Fixes #17

n1474335 8 år sedan
förälder
incheckning
20d9903572

+ 2 - 1
Gruntfile.js

@@ -445,7 +445,8 @@ module.exports = function(grunt) {
             deploy_gh_pages: {
                 command: [
                         "git add build/prod/index.html -v",
-                        "git commit -m 'GitHub Pages release'",
+                        "COMMIT_HASH=$(git rev-parse HEAD)",
+                        "git commit -m \"GitHub Pages release for ${COMMIT_HASH}\"",
                         "git push origin `git subtree split --prefix build/prod master`:gh-pages --force",
                         "git reset HEAD~",
                         "git checkout build/prod/index.html"

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
build/prod/cyberchef.htm


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
build/prod/index.html


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
build/prod/scripts.js


+ 6 - 6
src/js/config/OperationConfig.js

@@ -209,7 +209,7 @@ var OperationConfig = {
         ]
     },
     "XOR": {
-        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>Differential:</u> Set the key to the value of the previously decoded byte.",
+        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>",
         run: BitwiseOp.run_xor,
         highlight: true,
         highlight_reverse: true,
@@ -223,14 +223,14 @@ var OperationConfig = {
                 toggle_values: BitwiseOp.KEY_FORMAT
             },
             {
-                name: "Null preserving",
-                type: "boolean",
-                value: BitwiseOp.XOR_PRESERVE_NULLS
+                name: "Scheme",
+                type: "option",
+                value: BitwiseOp.XOR_SCHEME
             },
             {
-                name: "Differential",
+                name: "Null preserving",
                 type: "boolean",
-                value: BitwiseOp.XOR_DIFFERENTIAL
+                value: BitwiseOp.XOR_PRESERVE_NULLS
             }
         ]
     },

+ 15 - 8
src/js/operations/BitwiseOp.js

@@ -19,10 +19,10 @@ var BitwiseOp = {
      * @param {byte_array} key
      * @param {function} func - The bitwise calculation to carry out
      * @param {boolean} null_preserving
-     * @param {boolean} differential
+     * @param {string} scheme
      * @returns {byte_array}
      */
-    _bit_op: function (input, key, func, null_preserving, differential) {
+    _bit_op: function (input, key, func, null_preserving, scheme) {
         if (!key || !key.length) key = [0];
         var result = [],
             x = null,
@@ -34,8 +34,15 @@ var BitwiseOp = {
             o = input[i];
             x = null_preserving && (o === 0 || o == k) ? o : func(o, k);
             result.push(x);
-            if (differential && !(null_preserving && (o === 0 || o == k))) {
-                key[i % key.length] = x;
+            if (scheme != "Standard" && !(null_preserving && (o === 0 || o == k))) {
+                switch (scheme) {
+                    case "Input differential":
+                        key[i % key.length] = x;
+                        break;
+                    case "Output differential":
+                        key[i % key.length] = o;
+                        break;
+                }
             }
         }
         
@@ -52,7 +59,7 @@ var BitwiseOp = {
      * @constant
      * @default
      */
-    XOR_DIFFERENTIAL: false,
+    XOR_SCHEME: ["Standard", "Input differential", "Output differential"],
     /**
      * @constant
      * @default
@@ -68,12 +75,12 @@ var BitwiseOp = {
      */
     run_xor: function (input, args) {
         var key = Utils.format[args[0].option].parse(args[0].string || ""),
-            null_preserving = args[1],
-            differential = args[2];
+            scheme = args[1],
+            null_preserving = args[2];
         
         key = Utils.word_array_to_byte_array(key);
             
-        return BitwiseOp._bit_op(input, key, BitwiseOp._xor, null_preserving, differential);
+        return BitwiseOp._bit_op(input, key, BitwiseOp._xor, null_preserving, scheme);
     },
     
     

+ 3 - 3
src/static/stats.txt

@@ -1,9 +1,9 @@
 203	source files
-104211	lines
+104218	lines
 4.0M	size
 
 136	JavaScript source files
-95121	lines
+95128	lines
 3.4M	size
 
 78	third party JavaScript source files
@@ -11,7 +11,7 @@
 2.7M	size
 
 58	first party JavaScript source files
-18744	lines
+18751	lines
 724K	size
 
 3.1M	uncompressed JavaScript size

Vissa filer visades inte eftersom för många filer har ändrats