== Why branch? ==

PageProtectionPlus is a branch, since it differs in the most
common  operations from  PageProtection.  It uses  symmetric
encryption for  a text  and RSA  for encryption  of randomly
generated symmetric key delivered  within a header preceding
an encrypted text data.

Original PageProtection  uses pure RSA encryption,  which is
strong but  it fails with  some requirements I needed  to be
enforced:

* The need of using strong RSA key (more than 2048 bits)
* The need to be able to exchange the default RSA key periodically
* The need that encryption/decryption should be performed fast
* The need that the editor can choose symmetric cipher

For that reason the major differences are:

* RSA encrypts only the random, symmetric key (by default)
* Texts are encrypted using random, symmetric keys
* There is a key heap - directory containing all RSA keys that are in use
* Asymmetric keys (RSA) are identfied by their IDs
* Encrypted text sections keept in the database have headers

And the minor:

* Code for encryption/decryption is modular - you can adapt a new
  cipher engine in a minutes
* Editor can decide, which symmetric algorithm will be used
* Added i18n
* Added special page containing list of supported ciphers
* Texts are passed in binary format to the crypto-engines
  (base64 enc/dec and headers are handled by new classes)
* ProtectionParser class was forced to not repeat decryption
  for text areas where it was done already
* classes that are parsing tags were changed a bit to handle
  new attribute for the protect tag called 'cipher'

Result:

On Xeon(TM) CPU 2.70GHz RSA-encryption of one page (7kB) has taken
about 90 seconds before, and now using Blowfish+RSA it takes 3 seconds.

