Ignore:
Timestamp:
Aug 6, 2009, 10:50:12 PM (12 years ago)
Author:
Sören Rinne
Message:
  • Modified Trivium a bit.
Location:
trunk/CrypPlugins/Trivium
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/Trivium/Trivium.cs

    r410 r416  
    5151        }
    5252
    53         /*[PropertyInfo(Direction.Input, "Input", "Data to be encrypted or decrypted.", "", true, false, DisplayLevel.Beginner, QuickWatchFormat.Hex, null)]
     53        [PropertyInfo(Direction.Input, "Input", "Data to be encrypted or decrypted.", "", true, false, DisplayLevel.Beginner, QuickWatchFormat.Hex, null)]
    5454        public string InputString
    5555        {
     
    6060                OnPropertyChanged("InputString");
    6161            }
    62         }*/
     62        }
    6363
    6464        [PropertyInfo(Direction.Input, "Key", "Must be 10 bytes (80 bit) in Hex.", "", true, false, DisplayLevel.Beginner, QuickWatchFormat.Hex, null)]
     
    336336        }
    337337
     338        // TODO: check if input is boolean or hex
     339        // returns -1 if no hex
     340        // returns 1 is hex
     341        private int checkInput(string input)
     342        {
     343            int returnValue = 1;
     344            return returnValue;
     345        }
     346
    338347
    339348        public void Execute()
     
    342351        }
    343352
    344         private void process(int action)
     353        private void process(int padding)
    345354        {
    346355            //Encrypt/Decrypt String
    347356            try
    348357            {
     358                // a test vector; should have the following output:
     359                // FC9659CB953A37F...
    349360                //string IV_string = "288ff65dc42b92f960c7";
    350361                //string key_string = "0f62b5085bae0154a7fa";
     362                string input_string = inputString;
     363
     364                // check input string
     365                if (checkInput(input_string) == -1)
     366                    return;
     367
    351368                string IV_string = inputIV;
    352369                string key_string = inputKey;
     370
    353371                int[] IV = new int[IV_string.Length * 4];
    354372                int[] key = new int[key_string.Length * 4];
     
    360378                GuiLogMessage("length of key: " + key.Length, NotificationLevel.Info);
    361379
     380                // test if padding to do
     381                int bitsToPad = (32 - input_string.Length % 32) % 32;
     382                GuiLogMessage("Bits to pad: " + bitsToPad, NotificationLevel.Info);
     383                // pad partial block with zeros
     384                if (bitsToPad != 0)
     385                {
     386                    for (int i = 0; i < bitsToPad; i++)
     387                    {
     388                        input_string += "0";
     389                    }
     390                }
     391
    362392                string keystream;
    363393
     
    374404                GuiLogMessage("Starting encryption [Keysize=80 Bits]", NotificationLevel.Info);
    375405
    376 
    377 
    378406                // init Trivium
    379407                initTrivium(IV, key);
    380408
    381                 // generate keystream with given length (TODO: length of inputbytes)
     409                // generate keystream with given length (TODO: padding if inputstring % 32 != 0)
    382410                // ACHTUNG, mag keine grossen zahlen als inputs
    383411                // EDIT 30.07.09: Jetzt mag er große Zahlen ;)
    384                 keystream = keystreamTrivium(settings.KeystreamLength);
     412                if (settings.KeystreamLength <= 0)
     413                {
     414                    keystream = keystreamTrivium(input_string.Length);
     415                    //GuiLogMessage("DEBUG: inputString.Length + bitsToPad: " + (inputString.Length + bitsToPad), NotificationLevel.Info);
     416                }
     417                else
     418                {
     419                    keystream = keystreamTrivium(settings.KeystreamLength);
     420                }
    385421               
    386422                DateTime stopTime = DateTime.Now;
     
    401437                if (!stop)
    402438                {
    403                     GuiLogMessage("Encryption complete! (keystream length: " + keystream.Length + " bit)", NotificationLevel.Info);
     439                    GuiLogMessage("Encryption complete in " + duration + "! (input length : " + input_string.Length + ", keystream/output length: " + keystream.Length + " bit)", NotificationLevel.Info);
    404440                }
    405441
Note: See TracChangeset for help on using the changeset viewer.