This repository contains several documents that are related to the calc.pw password calculation.
To ensure the randomness distribution of the calc.pw key expansion, a full dieharder run has been executed against calcpw.php with low-entropy input. The results can be found in the file dieharder/dist/calcpw.txt
. The dieharder run was executed with the following command and version 3.31.1 of dieharder, so the results should be reproducible:
$ ./calcpw.php --dieharder "password" "information" | dieharder -g 200 -a
The calc.pw key expansion has passed all dieharder tests. However the sts_serial (ntuple = 6)
, rgb_bitdist (ntuple = 11)
and dab_filltree (ntuple = 32)
tests have only been passed as weak which may happen for PRNGs.
The structure of the calc.pw key expansion has been visualized with the help of the open-source tool draw.io which is also available at app.diagrams.net. The source can be found in the file drawio/src/calcpw.drawio
. The following renderings are available:
- PDF:
drawio/dist/calcpw.pdf
- PNG:
drawio/dist/calcpw.png
- SVG:
drawio/dist/calcpw.svg
The ideas behind the calc.pw password calculation have been described in detail in encryption/ENCRYPTION.md
.
To ensure the even distribution of the calc.pw password encoding, the script modulobias/src/modulobias.php
has been developed and a modulo bias run has been executed against calcpw.php. The results can be found in the file modulobias/dist/calcpw.txt
. The modulo bias run was executed with the following command and version v0.1b0 of the script, so the results should be reproducible:
$ ./calcpw.php --modulobias "password" "information" "0-9 A-Z a-z" | ./modulobias.php
The calc.pw password encoding has passed the modulo bias test.
Several screenshots had to be taken in order to get calcpw.ios onto the App Store. The AppMockUp Studio was used for generating the screenshot images.