CryptoPPP

An implementation of Steve Gibson's Perfect Paper Passwords (PPP) system.

CryptoPPP Library Module For Processwire

Implements Steve Gibson's PPP One-Time-Pad System along with some additional helpers.

Pre-requisites


Requires OpenSSL and bcmaths PHP extension to be installed.

Version 3.1.0 changed from the, now deprecated, mcrypt library over to using OpenSSL internally.

Generating A Single Key


Simply use $key = CryptoPPP::genKeys(); or $key = CryptoPPP::genKeys(1);

Generating Multiple Keys.


If you want 2 keys you would do $keys = CryptoPPP::genKeys(2); to get them in the $keys array or do list($k1, $k2) = CryptoPPP::genKeys(2); to assign them to named variables.

Now that you have at least one key, you can use it as the basis of generating tokens or token streams.

Converting A Key Into A Token (a strings of characters).


The simplest way to convert a key into a token of a given length and using a given output alphabet is to call the CryptoPPP::keyToToken static method. If no length or alphabet is defined a 12 character token using the default alphabet (!#%+23456789:=?@ABCDEFGHJKLMNPRSTUVWXYZabcdefghijkmnopqrstuvwxyz) will be created from the key.

To create tokens with a format such as 'X7gM-jA9v-KtWs' where the length of the 'blocks' and the 'glue' between them are customisable you can use the related helper method CryptoPPP::keyToTokenBlocks().

Generating A Token Sequence (a One-Time-Pad) From A Key + Sequence Number.


If your application can associate an incrementing sequence number with a key, then you can use the PPP system to generate a One-Time-Pad (a stream of tokens.) This is simply done by passing the key, the sequence position, output alphabet and token length to CryptoPPP::getCode(). Once your application finishes using that token from the token stream, simply increment the sequence number ready for the next usage.

More modules by Netcarver

  • ProcessDiagnostics

    A simple diagnostic gathering suite of modules for ProcessWire CMS/CMF.
  • Textile

    A text formatting module for parsing the Textile lightweight markup language. This uses the netcarver/textile package from Github.
  • Release Notes Discovery Module

    Makes discovery of a module's changes, prior to upgrade, a trivial task. Makes support documentation accessible from the admin interface.
  • PW-FieldtypeTime

    Adds a fieldtype and Inputfield for MySQL TIME fields.
  • Admin Restrict Page Tree

    Stops users with certain roles from accessing the page tree.
  • Street Address

    Fieldtype to store a street address and allows access to its subfields.
  • Field Change Notifier

    Emails users with a given role when a watched field changes value.
  • Fluid Images Textformatter

    Removes the height attribute and adds a class to img tags. Set max-width:100% for the class in your CSS and you have fluid images.
  • Session Login Alarm

    Notify users of successful login or failed login attempts on their accounts.

All modules by Netcarver

Install and use modules at your own risk. Always have a site and database backup before installing new modules.