浏览代码

Merge remote-tracking branch 'refs/remotes/upstream/master'

Conflicts:
	build/prod/cyberchef.htm
	build/prod/index.html
	build/prod/scripts.js
	src/static/stats.txt
Matt C 8 年之前
父节点
当前提交
ed5f00d402

文件差异内容过多而无法显示
+ 1 - 0
build/prod/cyberchef.htm


文件差异内容过多而无法显示
+ 0 - 0
build/prod/index.html


文件差异内容过多而无法显示
+ 0 - 0
build/prod/scripts.js


+ 2 - 2
src/js/config/Categories.js

@@ -80,10 +80,10 @@ var Categories = [
             "ROT47",
             "ROT47",
             "XOR",
             "XOR",
             "XOR Brute Force",
             "XOR Brute Force",
+            "Vigenère Encode",
+            "Vigenère Decode",
             "Derive PBKDF2 key",
             "Derive PBKDF2 key",
             "Derive EVP key",
             "Derive EVP key",
-            "Vigenere Encode",
-            "Vigenere Decode"
         ]
         ]
     },
     },
     {
     {

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

@@ -1325,33 +1325,33 @@ var OperationConfig = {
             },
             },
         ]
         ]
     },
     },
-    "Vigenere Encode": {
-        description: "Encodes string with the Vigenere cipher.",
-        run: Cipher.run_vigenc,
+    "Vigenère Encode": {
+        description: "The Vigenere cipher is a method of encrypting alphabetic text by using a series of different Caesar ciphers based on the letters of a keyword. It is a simple form of polyalphabetic substitution.",
+        run: Cipher.run_vigenere_enc,
         highlight: true,
         highlight: true,
         highlight_reverse: true,
         highlight_reverse: true,
         input_type: "string",
         input_type: "string",
         output_type: "string",
         output_type: "string",
         args: [
         args: [
             {
             {
-                name: "Keyword",
+                name: "Key",
                 type: "string",
                 type: "string",
-                value: Cipher.VIG_ENC_KEY
+                value: ""
             }
             }
         ]
         ]
     },
     },
-    "Vigenere Decode": {
-        description: "Decodes string with the Vigenere cipher.",
-        run: Cipher.run_vigdec,
+    "Vigenère Decode": {
+        description: "The Vigenere cipher is a method of encrypting alphabetic text by using a series of different Caesar ciphers based on the letters of a keyword. It is a simple form of polyalphabetic substitution.",
+        run: Cipher.run_vigenere_dec,
         highlight: true,
         highlight: true,
         highlight_reverse: true,
         highlight_reverse: true,
         input_type: "string",
         input_type: "string",
         output_type: "string",
         output_type: "string",
         args: [
         args: [
             {
             {
-                name: "Keyword",
+                name: "Key",
                 type: "string",
                 type: "string",
-                value: Cipher.VIG_DEC_KEY
+                value: ""
             }
             }
         ]
         ]
     },
     },

+ 57 - 64
src/js/operations/Cipher.js

@@ -387,101 +387,94 @@ var Cipher = {
     
     
 
 
     /**
     /**
-     * @constant
-     * @default
-     */
-    VIG_ENC_KEY: "cipher",
-
-    /**
-     * Vigenere cipher encode.
+     * Vigenère Encode operation.
      *
      *
      * @author Matt C [matt@artemisbot.pw]
      * @author Matt C [matt@artemisbot.pw]
      * @param {string} input
      * @param {string} input
      * @param {Object[]} args
      * @param {Object[]} args
      * @returns {string}
      * @returns {string}
      */
      */
-    run_vigenc: function (input, args) {
+    run_vigenere_enc: function (input, args) {
         var alphabet = "abcdefghijklmnopqrstuvwxyz",
         var alphabet = "abcdefghijklmnopqrstuvwxyz",
-            keyword = args[0].toLowerCase(),
+            key = args[0].toLowerCase(),
             output = "",
             output = "",
             fail = 0,
             fail = 0,
-            keyIndex,
-            msgIndex,
+            key_index,
+            msg_index,
             chr;
             chr;
-        if (keyword) {
-            if (/^[a-zA-Z]+$/.test(keyword)) {
-                for (var i = 0; i < input.length; i++) {
-                    if (alphabet.indexOf(input[i]) >= 0) {
-                        chr = keyword[(i - fail) % keyword.length];             //Gets the corresponding character of keyword for current letter, accounting for chars not in alphabet
-                        keyIndex = alphabet.indexOf(chr);                       //Gets location in vigenere square of keyword char
-                        msgIndex = alphabet.indexOf(input[i]);                  //Gets location in vigenere square of message char
-                        output += alphabet[(keyIndex + msgIndex) % 26];        //Gets encoded letter by finding sum of indexes modulo 26 and finding the letter corresponding to that
-                    } else if (alphabet.indexOf(input[i].toLowerCase()) >= 0) {
-                        chr = keyword[(i - fail) % keyword.length].toLowerCase();
-                        keyIndex = alphabet.indexOf(chr);
-                        msgIndex = alphabet.indexOf(input[i].toLowerCase());
-                        output += alphabet[(keyIndex + msgIndex) % 26].toUpperCase();
-                    } else {
-                        output += input[i];
-                        fail++;
-                    }
-                }
+
+        if (!key) return "No key entered";
+        if (!/^[a-zA-Z]+$/.test(key)) return "The key must consist only of letters";
+
+        for (var i = 0; i < input.length; i++) {
+            if (alphabet.indexOf(input[i]) >= 0) {
+                // Get the corresponding character of key for the current letter, accounting
+                // for chars not in alphabet
+                chr = key[(i - fail) % key.length];
+                // Get the location in the vigenere square of the key char
+                key_index = alphabet.indexOf(chr);
+                // Get the location in the vigenere square of the message char
+                msg_index = alphabet.indexOf(input[i]);
+                // Get the encoded letter by finding the sum of indexes modulo 26 and finding
+                // the letter corresponding to that
+                output += alphabet[(key_index + msg_index) % 26];
+            } else if (alphabet.indexOf(input[i].toLowerCase()) >= 0) {
+                chr = key[(i - fail) % key.length].toLowerCase();
+                key_index = alphabet.indexOf(chr);
+                msg_index = alphabet.indexOf(input[i].toLowerCase());
+                output += alphabet[(key_index + msg_index) % 26].toUpperCase();
             } else {
             } else {
-                throw "Keyword can only consist of letters.";
+                output += input[i];
+                fail++;
             }
             }
-        } else {
-            throw "A keyword is required.";
         }
         }
+
         return output;
         return output;
     },
     },
-    /**
-     * @constant
-     * @default
-     */
-    VIG_DEC_KEY: "cipher",
+
 
 
     /**
     /**
-     * Vigenere cipher decode.
+     * Vigenère Decode operation.
      *
      *
      * @author Matt C [matt@artemisbot.pw]
      * @author Matt C [matt@artemisbot.pw]
      * @param {string} input
      * @param {string} input
      * @param {Object[]} args
      * @param {Object[]} args
      * @returns {string}
      * @returns {string}
      */
      */
-    run_vigdec: function (input, args) {
+    run_vigenere_dec: function (input, args) {
         var alphabet = "abcdefghijklmnopqrstuvwxyz",
         var alphabet = "abcdefghijklmnopqrstuvwxyz",
-            keyword = args[0].toLowerCase(),
+            key = args[0].toLowerCase(),
             output = "",
             output = "",
             fail = 0,
             fail = 0,
-            keyIndex,
-            msgIndex,
+            key_index,
+            msg_index,
             chr;
             chr;
-        if (keyword) {
-            if (/^[a-zA-Z]+$/.test(keyword)) {
-                for (var i = 0; i < input.length; i++) {
-                    if (alphabet.indexOf(input[i]) >= 0) {
-                        chr = keyword[(i - fail) % keyword.length];
-                        keyIndex = alphabet.indexOf(chr);
-                        msgIndex = alphabet.indexOf(input[i]);
-                        output += alphabet[(msgIndex - keyIndex + alphabet.length ) % 26]; //subtract indexes from each other, add 26 just in case the value is negative, modulo to remove if neccessary
-                    } else if (alphabet.indexOf(input[i].toLowerCase()) >= 0) {
-                        chr = keyword[(i - fail) % keyword.length].toLowerCase();
-                        keyIndex = alphabet.indexOf(chr);
-                        msgIndex = alphabet.indexOf(input[i].toLowerCase());
-                        output += alphabet[(msgIndex + alphabet.length - keyIndex) % 26].toUpperCase();
-                    } else {
-                        output += input[i];
-                        fail++;
-                    }
-                }
+
+        if (!key) return "No key entered";
+        if (!/^[a-zA-Z]+$/.test(key)) return "The key must consist only of letters";
+
+        for (var i = 0; i < input.length; i++) {
+            if (alphabet.indexOf(input[i]) >= 0) {
+                chr = key[(i - fail) % key.length];
+                key_index = alphabet.indexOf(chr);
+                msg_index = alphabet.indexOf(input[i]);
+                // Subtract indexes from each other, add 26 just in case the value is negative,
+                // modulo to remove if neccessary
+                output += alphabet[(msg_index - key_index + alphabet.length ) % 26];
+            } else if (alphabet.indexOf(input[i].toLowerCase()) >= 0) {
+                chr = key[(i - fail) % key.length].toLowerCase();
+                key_index = alphabet.indexOf(chr);
+                msg_index = alphabet.indexOf(input[i].toLowerCase());
+                output += alphabet[(msg_index + alphabet.length - key_index) % 26].toUpperCase();
             } else {
             } else {
-                throw "Keyword can only consist of letters.";
+                output += input[i];
+                fail++;
             }
             }
-        } else {
-            throw "A keyword is required.";
         }
         }
+
         return output;
         return output;
-    }
+    },
+
 };
 };
 
 
 
 

+ 7 - 0
src/js/views/html/RecipeWaiter.js

@@ -52,6 +52,13 @@ RecipeWaiter.prototype.initialise_operation_drag_n_drop = function() {
         this.remove_intent = true;
         this.remove_intent = true;
         this.app.progress = 0;
         this.app.progress = 0;
     }.bind(this));
     }.bind(this));
+
+    Sortable.utils.on(rec_list, "touchend", function(e) {
+        var loc = e.changedTouches[0],
+            target = document.elementFromPoint(loc.clientX, loc.clientY);
+
+        this.remove_intent = !rec_list.contains(target);
+    }.bind(this));
     
     
     // Favourites category
     // Favourites category
     document.querySelector("#categories a").addEventListener("dragover", this.fav_dragover.bind(this));
     document.querySelector("#categories a").addEventListener("dragover", this.fav_dragover.bind(this));

+ 14 - 0
src/static/stats.txt

@@ -1,18 +1,32 @@
 203	source files
 203	source files
+<<<<<<< HEAD
 104401	lines
 104401	lines
 	size
 	size
 
 
 136	JavaScript source files
 136	JavaScript source files
 95311	lines
 95311	lines
 3.4M	size
 3.4M	size
+=======
+104403	lines
+4.0M	size
+
+136	JavaScript source files
+95313	lines
+3.5M	size
+>>>>>>> master
 
 
 78	third party JavaScript source files
 78	third party JavaScript source files
 76377	lines
 76377	lines
 2.7M	size
 2.7M	size
 
 
 58	first party JavaScript source files
 58	first party JavaScript source files
+<<<<<<< HEAD
 18934	lines
 18934	lines
 729K	size
 729K	size
+=======
+18936	lines
+728K	size
+>>>>>>> master
 
 
 3.2M	uncompressed JavaScript size
 3.2M	uncompressed JavaScript size
 1.7M	compressed JavaScript size
 1.7M	compressed JavaScript size

部分文件因为文件数量过多而无法显示