
09/04/14 - v2.1.5

- The ICryptoTransform instances produced by BlowfishAlgorithm were not
  resuable. They now are, IVs get reset to their original values.

09/04/06 - v2.1.4

- moved project to VS2008, but kept code compatible to .NET 2.0
- changed test references to NUnit 2.4.8
- added speed comparsion to AES in BlowfishDemo

07/10/30 - v2.1.3

- minor speed improvements in the key setup and the CFB mode
- some code cleanup (keeping variables more local, tab adjustment, etc)
- removed BlowfishSimple destructor, nullptr crashes were reported and it also
  forced cleanup where for performance reasons it could be undesired

07/09/17 - v2.1.2

- turned on COM visibility for BlowfishNET.DLL; this is experimental, but
  should at least work for "BlowfishNET.BlowfishSimple", since it's only
  dealing with strings

07/09/16 - v2.1.1

- added BlowfishSimple.Initialize() for instance reusability (and apparently
  also needed when using the code in ASP via COM callable wrappers)
- all tabs got converted to spaces
- test cases upgraded to NUnit 2.4.3

07/08/10 - v2.1

- added CFB cipher mode, compatible to OpenSSL's Blowfish implementation
- test cases upgraded to NUnit 2.4.1

06/11/05 - v2.00

- new solution for Visual Studio 2005 and Express, using .NET 2.0
- refactored and cleaned up the complete source code, namespaces got adjusted
  and assemblies have now proper version and string resources
- fixed all of the broken XML comments for generating API documentation
- the TestBlowfishJXchg test case wasn't activated
- TestBlowfishEasy failed sometimes (empty strings can actually decrypt fine
  with a wrong password, since there's no real keycheck in BlowfishEasy)
- added BlowfishAlgorithm (this time it's done right)
- changed BlowfishStream to fully use .NET's CryptoStream together with the
  new BlowfishAlgorithm class, while the old implementation was removed 
  compatibility has been preserved (except of the construction call)

06/10/19 - v1.03

- fixed a bug in the BlowfishStream: when writing single bytes together with
  larger buffers data corruption in the output stream was caused
- changed the Finalize() method of BlowfishSimple to a destructor

05/07/04 - v1.02

- BlowfishECB.Initialize() didn't care about the 'ofs' parameter at all and
  always read from key[0]; this has been fixed - existing code should be
  checked if values other than 0 have been passed for 'ofs'
- adjusted the MAK_TEST.BAT for the latest NUnit 2.2
- changed BlowfishTests.cs to avoid calling obsolete NUnit methods
- added performance routine to BlowfishDemo.cs

04/01/14 - v1.01

- removed BlowfishAlgorithm out of this package, there was a problem where the
  final block transformation was called with zero bytes (requiring a rewrite
  and buffering) by the .NET framework - too much ambiguity for my taste
- compacted all the sources back to one single folder with easy batch file
  compilation for people who don't own one of the Visual Studio products

03/08/28 - v1.00

- this is a complete overhaul of the former beta product (version 0.xx), the
  API has been modified and optimized in many places, adaption of existing
  sources based on Blowfish.NET might be necessary; binary compatibility of
  already encrypted data should not be affected
- there is now Java interoperability support, which allows data exchange with
  the open source library BlowfishJ
- the licensing model also has changed, please refer to README.TXT

03/02/19 - v0.27

- fixed in bug Blowfish class constructor, once Encrypt instead of
  BaseEncrypt got called, leading to noncompatible CBC encryption
  results

02/09/20 - v0.26

- fixed bug in the weak key check

02/09/19 - v0.25

- added weak key property to the Blowfish class
- for zero padding, no more extra block is when data fits in a block
- added comments to BlowfishAlgorithmTest
- CBC IV doesn't get generated anymore in BlowfishAlgorithmTest for ECB

02/09/17 - v0.24

- reverse padding during decryption wasn't correct for PaddingMode.Zeros
- BlowfishAlgorithmTest was set to the AES algorithm by default

02/09/16 - v0.23

- bug in the extended BlowfishAlgorithm constructor (key and IV
  checks against null were reversed)

02/09/09 - v0.22

- BlowfishCBC was broken, the key setup in the constructor used the
  inherited Encrypt() method; fixed by introducing the BaseEncrypt()
  method, since there is no(?) other way in C#

02/08/27 - v0.21

- adjusted BlowfishAlgorithm to strip off padding data automatically
  when it runs in PKCS7 mode
- made exceptions descriptive (in BlowfishAlgorithm)

02/08/26 - v0.20

- added test vectors from the official document on the Counterpane
  website to the test project
- all of the Encrypt() and Decrypt() methods now return the number
  of blocks which were processed
- added wrapper which implements the .NET framework class
  SymmetricAlgorithm, so Blowfish can now be used with standard
  interfaces; provided is also a test case for it
- changed the project name from "Blowfish for C#" to Blowfish.NET

02/08/21 - v0.13

- bug: hiding the methods in BlowfishCBC with the new modifier
  caused the CBC code to use the ECB methods; all of the self
  referencial code was removed
- simplified the BlowfishCBC constructor code
- removed the makefile, added a Visual Studio solution instead

02/02/16 - v0.12

- minimal speedup in the final swap parts of the cipher
- padding in BlowfishSimple is now done according to RFC 2630,
  yet still backwards compatibe to output of older versions
- renamed BlowfishCbc class to BlowfishCBC
- all void class functions now return a self reference instead
- for clarity some methods are now declared as new
- namespaced the module as Blowfish_NET
- added a makefile to build the assembly and the test program

01/06/28 - v0.11

- increased the speed by 26% (optimized code, thanks go to the
  MS C# team and Dr GUI)

01/06/21 - v0.10

- sources converted to .NET Beta 2, they won't compile under
  Beta 1 anymore (changes made only in BlowfishSimple.cs,
  output should be compatible to the old version)

01/06/07 - v0.09

- adjusted the benchmark
- some typos in the comments

01/05/20 - v0.08

- fixed ugly bug in Blowfish.Encrypt() and Blowfish.Decrypt(),
  using start indexes other than zero caused a crash
- some documentation issues were solved
- new and powerful BlowfishSimple class

01/05/14 - v0.05

- new BlowfishCbc class for encryption/decryption in CBC mode
- XML documentation comments for the whole source code
- some methods in the class Blowfish became virtual
- extended BlowfishTest

01/05/12 - v0.01

(first release)
