Ignore:
Timestamp:
Feb 17, 2009, 7:36:05 PM (13 years ago)
Author:
Gerhard Junker
Message:

2FISH - first fixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SSCext/TwofishEncryption.cs

    r157 r226  
    134134        {
    135135          outputBuffer = new byte[16]; // blocksize
     136          byte[] tmp = new byte[16];
    136137          uint[] x=new uint[4];
    137138
     139       
     140          // Padding
     141          Array.Clear(tmp, 0, tmp.Length);
     142          for (int i = 0; i < inputCount; i++)
     143              tmp[i] = inputBuffer[inputOffset + i];
     144
     145       
    138146          // load it up
    139147          for (int i=0; i < 4; i++) // should be okay as we have already said to pad with zeros
    140148          {
    141149            x[i] =
    142               (uint)(inputBuffer[i * 4 + 3 + inputOffset] << 24) |
    143               (uint)(inputBuffer[i * 4 + 2 + inputOffset] << 16) |
    144               (uint)(inputBuffer[i * 4 + 1 + inputOffset] <<  8) |
    145               (uint)(inputBuffer[i * 4 + 0 + inputOffset]      );
     150              (uint)(tmp[i * 4 + 3] << 24) |
     151              (uint)(tmp[i * 4 + 2] << 16) |
     152              (uint)(tmp[i * 4 + 1] <<  8) |
     153              (uint)(tmp[i * 4 + 0]      );
    146154
    147155          }
     
    170178        }
    171179
    172         return outputBuffer;
     180        if (encryptionDirection == EncryptionDirection.Encrypting)
     181            return outputBuffer;
     182
     183        int len = 15;
     184        while(len >= 0 && outputBuffer[len] == 0) len--;
     185
     186        byte[] erg = new byte[len + 1];
     187
     188        Array.Copy(outputBuffer, erg, len + 1);
     189        return erg;
    173190      }
    174191
Note: See TracChangeset for help on using the changeset viewer.