Changeset 1174 for trunk/CrypPlugins/AES


Ignore:
Timestamp:
Feb 23, 2010, 10:15:20 PM (12 years ago)
Author:
Sven Rech
Message:

better AES implementation for bruteforcing

Location:
trunk/CrypPlugins/AES
Files:
2 edited

Legend:

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

    r1162 r1174  
    3434using Cryptool.PluginBase.Control;
    3535using System.Reflection;
     36using NativeCryptography;
    3637
    3738namespace Cryptool.Plugins.Cryptography.Encryption
     
    506507            int size = bytesToUse > ciphertext.Length ? ciphertext.Length : bytesToUse;
    507508
    508             byte[] output = new byte[size];
    509 
    510 
    511             SymmetricAlgorithm aes_algorithm = null;
    512 
    513             //Decrypt Stream
    514             try
    515             {
    516                 if (!(aes_algorithm is object))
    517                 {
    518                     if (((AESSettings)plugin.Settings).CryptoAlgorithm == 1)
    519                     { aes_algorithm = new RijndaelManaged(); }
    520                     else
    521                     { aes_algorithm = new AesCryptoServiceProvider(); }
    522                 }
    523 
    524                 this.ConfigureAlg(aes_algorithm, key);
    525 
    526                 ICryptoTransform p_decryptor;
    527                 try
    528                 {
    529                     p_decryptor = aes_algorithm.CreateDecryptor();
    530                 }
    531                 catch
    532                 {
    533                     //dirty hack to allow weak keys:
    534                     MethodInfo mi = aes_algorithm.GetType().GetMethod("_NewEncryptor", BindingFlags.NonPublic | BindingFlags.Instance);
    535                     object[] Par = { aes_algorithm.Key, aes_algorithm.Mode, aes_algorithm.IV, aes_algorithm.FeedbackSize, 0 };
    536                     p_decryptor = mi.Invoke(aes_algorithm, Par) as ICryptoTransform;
    537                 }
    538 
    539                 crypto_stream = new CryptoStream(new MemoryStream(ciphertext, 0, size), p_decryptor, CryptoStreamMode.Read);
    540 
    541                 byte[] buffer = new byte[aes_algorithm.BlockSize / 8];
    542                 int bytesRead;
    543                 int position = 0;
    544 
    545                 while ((bytesRead = crypto_stream.Read(buffer, 0, buffer.Length)) > 0 && !plugin.isStopped())
    546                 {
    547                     for (int i = 0; i < bytesRead; i++)
    548                     {
    549                         if (position + i < output.Length)
    550                         {
    551                             output[position + i] = buffer[i];
    552                         }
    553                         else
    554                         {
    555                             break;
    556                         }
    557                     }
    558                     position += bytesRead;
    559                 }
    560 
    561             }
    562             catch (Exception exception)
    563             {
    564                 aes_algorithm = null;   // we got an exception so we do not use this object any more
    565                 throw exception;
    566             }
    567 
    568             return output;
     509            int bits = -1;
     510            switch (((AESSettings)plugin.Settings).Keysize)
     511            {
     512                case 0:
     513                    bits = 16*8;
     514                    break;
     515                case 1:
     516                    bits = 24*8;
     517                    break;
     518                case 2:
     519                    bits = 32*8;
     520                    break;
     521            }
     522
     523            if (bits == -1)
     524                return null;
     525
     526            return NativeCryptography.Crypto.decryptAES(ciphertext, key, bits, size);
    569527        }
    570528
  • trunk/CrypPlugins/AES/AES.csproj

    r1031 r1174  
    44    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    55    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    6     <ProductVersion>9.0.30729</ProductVersion>
     6    <ProductVersion>9.0.21022</ProductVersion>
    77    <SchemaVersion>2.0</SchemaVersion>
    88    <ProjectGuid>{2A81A3B2-ABC0-4850-9C89-3830AD07FD6B}</ProjectGuid>
     
    6969      <Name>CrypPluginBase</Name>
    7070    </ProjectReference>
     71    <ProjectReference Include="..\..\NativeCryptography\NativeCryptography.vcproj">
     72      <Project>{97B06ADB-43E4-4320-9AD8-D167421F0644}</Project>
     73      <Name>NativeCryptography</Name>
     74    </ProjectReference>
    7175  </ItemGroup>
    7276  <ItemGroup>
Note: See TracChangeset for help on using the changeset viewer.