For reproducability by an independent third party, all validation was performed using desktop office software to generate random numbers from known 'Random Seed' values (see Table II, below) using a "Uniform" distribution.
The initial approach involved the generation of numbers representing a possible combination of parameters from a population of all possible combinations of parameters.
Each test case was therefore represented by a single 23-digit binary number. The total number of possible combinations was 8,388,608. A later revision reduced the total number of possible combinations to 1,048,576 by reducing the number of digits assigned to parameters 'keyword', 'key', and 'plaintext' from five to four. A real number between 1 and the total number of possible combinations was generated. The number was rounded to the nearest integer value. This number was translated into binary. The digits of the number were then read from left to right, and used to generate the parameters for each test case: the first two digits represented parameter 'type', the second two represented parameter 'base', and so on.
This approach was rejected because the inclusion of some variable number of special characters and some variable number of duplicates did not reliably result in valid parameters. Many test cases failed to produce meaningful ciphertext. It was determined the population of all possible combinations of parameters includes many invalid combinations. For example, this approach resulted in five of every eight test cases automatically being invalid because only '100', '010', and '001' were valid values for parameter 'base'.
To resolve the problem, parameters were adjusted as necessary to produce meaningful ciphertext. However, no standard method reliably resulted in valid parameters. For example, converting letters to numbers in accordance with a known scheme (1337) sometimes resulted in valid parameters, but not in every test case, and converting some lower case characters into uppercase characters sometimes resulted in valid parameters, but not in every test case.
An approach which required the manipulation of randomly generated parameters was determined to be too subjective, and the generation of, and subsequent rejection of, large numbers of invalid combinations in search of those combinations which are valid was determined to be too time consuming. An approach which reduced the number of invalid combinations, while still providing reproducibility and reasonable assurance the utility functions as intended, was adopted.
For each combination of parameters selected:
The selected parameters and resulting intermediate variables were validated in accordance with the validation protocol, above, and produced the ciphertext reported in Table I, below. The ciphertext may be reproduced from the selected parameters in Table II, below, using the utility or by hand, with one exception: the output of the 'Validate' button has since been revised to report both parameter 'special' and unique special characters, in lieu of only unique special characters reported initially. Columns 'Validate' and 'Tabula' link to the output of the 'Validate' and 'Tabula Recta' buttons for each test case.
Overall, the results support the assertion that the utility works as intended. However, the total number of possible combinations for just one twelve-character parameter is 9512, which is a very large number, and it is therefore important to note that not all possible combinations can reasonably be tested.
Revisions affecting the results will be documented as necessary.
Table I - Results | |||
---|---|---|---|
Test Case | ciphertext | Validate | Tabula |
01 | xot | 01v.html | 01t.html |
02 | mHX1gM99 | 02v.html | 02t.html |
03 | gz+zn? | 03v.html | 03t.html |
04 | nk9 | 04v.html | 04t.html |
05 | chHFpaCKm | 05v.html | 05t.html |
06 | ct3g407 | 06v.html | 06t.html |
07 | zer4 | 07v.html | 07t.html |
08 | - none - | 08v.html | 08t.html |
09 | 4az,od4 | 09v.html | 09t.html |
10 | ag^c | 10v.html | 10t.html |
11 | z | 11v.html | 11t.html |
12 | g"7bmA-zR | 12v.html | 12t.html |
Table II - Test Case Parameters | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Test Case | Parameter | Random Seed | Output | |||||||||||
01 | type | 0001 | 0 | |||||||||||
00 | ||||||||||||||
base | 0002 | 1 | ||||||||||||
01 | ||||||||||||||
set | 0003 | 0 | ||||||||||||
000 | ||||||||||||||
special | 0104 | - none - | ||||||||||||
keyword | 0105 | 2 | 65 | 85 | 18 | 31 | 90 | 22 | 58 | 22 | 23 | 67 | 95 | |
! | ` | t | 1 | > | y | 5 | Y | 5 | 6 | b | ~ | |||
key | 0106 | 2 | 1 | 42 | 87 | 61 | 7 | 31 | 49 | 70 | 5 | 67 | 1 | |
! | I | v | \ | & | > | P | e | $ | b | |||||
plaintext | 0107 | 2 | 32 | 93 | 62 | 90 | 18 | 40 | 41 | 23 | 82 | 66 | 1 | |
! | ? | | | ] | y | 1 | G | H | 6 | q | a | ||||
02 | type | 0001 | 2 | |||||||||||
10 | ||||||||||||||
base | 0002 | 3 | ||||||||||||
11 | ||||||||||||||
set | 0003 | 2 | ||||||||||||
010 | ||||||||||||||
special | 0204 | 12 | 14 | 21 | 21 | |||||||||
+ | - | > | > | |||||||||||
keyword | 0205 | 3 | 46 | 39 | 59 | 76 | 88 | 69 | 64 | 59 | 45 | 25 | 14 | |
" | M | F | Z | k | w | d | _ | Z | L | 8 | - | |||
key | 0206 | 3 | 77 | 91 | 34 | 12 | 5 | 78 | 56 | 12 | 28 | 24 | 14 | |
" | l | z | A | + | $ | m | W | + | ; | 7 | - | |||
plaintext | 0207 | 3 | 14 | 48 | 9 | 41 | 17 | 87 | 47 | 60 | 10 | 24 | 14 | |
" | - | O | ( | H | 0 | v | N | [ | ) | 7 | - | |||
03 | type | 0001 | 1 | |||||||||||
01 | ||||||||||||||
base | 0002 | 2 | ||||||||||||
10 | ||||||||||||||
set | 0003 | 2 | ||||||||||||
010 | ||||||||||||||
special | 0304 | 12 | 22 | 16 | 15 | |||||||||
+ | ? | / | . | |||||||||||
keyword | 0305 | 4 | 27 | 88 | 6 | 27 | 86 | 22 | 70 | 2 | 68 | 76 | 26 | |
# | : | w | % | : | u | 5 | e | ! | c | k | 9 | |||
key | 0306 | 4 | 58 | 45 | 75 | 57 | 4 | 31 | 62 | 49 | 50 | 76 | 26 | |
# | Y | L | j | X | # | > | ] | P | Q | k | 9 | |||
plaintext | 0307 | 4 | 89 | 2 | 50 | 86 | 15 | 40 | 54 | 2 | 32 | 76 | 26 | |
# | x | ! | Q | u | . | G | U | ! | ? | k | 9 | |||
04 | type | 0001 | 2 | |||||||||||
10 | ||||||||||||||
base | 0002 | 2 | ||||||||||||
10 | ||||||||||||||
set | 0003 | 2 | ||||||||||||
010 | ||||||||||||||
special | 0404 | 12 | 20 | 21 | 20 | |||||||||
+ | = | > | = | |||||||||||
keyword | 0405 | 5 | 9 | 43 | 47 | 72 | 85 | 69 | 77 | 38 | 90 | 34 | 39 | |
$ | ( | J | N | g | t | d | l | E | y | A | F | |||
key | 0406 | 5 | 40 | 94 | 22 | 8 | 2 | 78 | 68 | 86 | 72 | 34 | 39 | |
$ | G | } | 5 | ' | ! | m | c | u | g | A | F | |||
plaintext | 0407 | 5 | 70 | 51 | 91 | 37 | 13 | 87 | 60 | 39 | 55 | 33 | 39 | |
$ | e | R | z | D | , | v | [ | F | V | @ | F | |||
05 | type | 0001 | 2 | |||||||||||
10 | ||||||||||||||
base | 0002 | 3 | ||||||||||||
11 | ||||||||||||||
set | 0003 | 2 | ||||||||||||
010 | ||||||||||||||
special | 0504 | 13 | 18 | 16 | 14 | |||||||||
, | ; | / | - | |||||||||||
keyword | 0505 | 6 | 84 | 91 | 88 | 23 | 83 | 22 | 83 | 75 | 18 | 86 | 51 | |
% | s | z | w | 6 | r | 5 | r | j | 1 | u | R | |||
key | 0506 | 6 | 21 | 48 | 63 | 52 | 95 | 31 | 75 | 28 | 95 | 85 | 52 | |
% | 4 | O | ^ | S | ~ | > | j | ; | ~ | t | S | |||
plaintext | 0507 | 6 | 52 | 6 | 38 | 82 | 12 | 40 | 66 | 76 | 77 | 85 | 52 | |
% | S | % | E | q | + | G | a | k | l | t | S | |||
06 | type | 0001 | 1 | |||||||||||
01 | ||||||||||||||
base | 0002 | 2 | ||||||||||||
10 | ||||||||||||||
set | 0003 | 5 | ||||||||||||
101 | ||||||||||||||
special | 0604 | 2 | 5 | 10 | 7 | 24 | 27 | 32 | 29 | |||||
! | $ | ) | & | [ | ^ | } | ' | |||||||
keyword | 0605 | 7 | 65 | 46 | 35 | 68 | 82 | 69 | 89 | 17 | 41 | 43 | 64 | |
& | ` | M | B | c | q | d | x | 0 | H | J | _ | |||
key | 0606 | 7 | 2 | 3 | 10 | 3 | 93 | 78 | 81 | 65 | 23 | 43 | 64 | |
& | ! | " | ) | " | | | m | p | ` | 6 | J | _ | |||
plaintext | 0607 | 7 | 33 | 54 | 79 | 33 | 10 | 87 | 72 | 18 | 5 | 42 | 64 | |
& | @ | U | n | @ | ) | v | g | 1 | $ | I | _ | |||
07 | type | 0001 | 1 | |||||||||||
01 | ||||||||||||||
base | 0002 | 2 | ||||||||||||
10 | ||||||||||||||
set | 0003 | 4 | ||||||||||||
100 | ||||||||||||||
special | 0704 | 2 | 3 | 5 | 2 | |||||||||
! | " | $ | ! | |||||||||||
keyword | 0705 | 8 | 47 | 94 | 76 | 19 | 80 | 22 | 1 | 54 | 63 | 95 | 77 | |
' | N | } | k | 2 | o | 5 | U | ^ | ~ | l | ||||
key | 0706 | 8 | 78 | 52 | 51 | 48 | 92 | 31 | 87 | 7 | 45 | 94 | 77 | |
' | m | S | R | O | { | > | v | & | L | } | l | |||
plaintext | 0707 | 8 | 14 | 9 | 26 | 78 | 9 | 39 | 79 | 55 | 28 | 94 | 77 | |
' | - | ( | 9 | m | ( | F | n | V | ; | } | l | |||
08 | type | 0001 | 3 | |||||||||||
11 | ||||||||||||||
base | 0002 | 3 | ||||||||||||
11 | ||||||||||||||
set | 0003 | 5 | ||||||||||||
101 | ||||||||||||||
special | 0804 | 2 | 11 | 11 | 6 | 24 | 33 | 33 | 28 | |||||
! | * | * | % | [ | ~ | ~ | _ | |||||||
keyword | 0805 | 9 | 28 | 49 | 23 | 63 | 79 | 68 | 8 | 91 | 85 | 52 | 89 | |
( | ; | P | 6 | ^ | n | c | ' | z | t | S | x | |||
key | 0806 | 9 | 59 | 6 | 92 | 93 | 90 | 77 | 93 | 44 | 68 | 52 | 89 | |
( | Z | % | { | | | y | l | | | K | c | S | x | |||
plaintext | 0807 | 9 | 90 | 58 | 67 | 29 | 7 | 86 | 85 | 91 | 50 | 51 | 90 | |
( | y | Y | b | < | & | u | t | z | Q | R | y | |||
09 | type | 0001 | 2 | |||||||||||
10 | ||||||||||||||
base | 0002 | 2 | ||||||||||||
10 | ||||||||||||||
set | 0003 | 6 | ||||||||||||
110 | ||||||||||||||
special | 0904 | 2 | 9 | 6 | 10 | 13 | 20 | 17 | 21 | |||||
! | ( | % | ) | , | = | : | > | |||||||
keyword | 0905 | 10 | 9 | 4 | 63 | 14 | 77 | 21 | 14 | 33 | 14 | 10 | 8 | |
) | ( | # | ^ | - | l | 4 | - | @ | - | ) | ' | |||
key | 0906 | 10 | 40 | 55 | 39 | 44 | 88 | 30 | 6 | 81 | 90 | 9 | 8 | |
) | G | V | F | K | w | = | % | p | y | ( | ' | |||
plaintext | 0907 | 10 | 71 | 12 | 14 | 74 | 6 | 39 | 91 | 34 | 72 | 9 | 8 | |
) | f | + | - | i | % | F | z | A | g | ( | ' | |||
10 | type | 0001 | 2 | |||||||||||
10 | ||||||||||||||
base | 0002 | 2 | ||||||||||||
10 | ||||||||||||||
set | 0003 | 3 | ||||||||||||
011 | ||||||||||||||
special | 1004 | 13 | 18 | 12 | 16 | 24 | 29 | 23 | 27 | |||||
, | ; | + | / | [ | ` | @ | ^ | |||||||
keyword | 1005 | 11 | 85 | 52 | 10 | 59 | 76 | 68 | 20 | 70 | 36 | 61 | 21 | |
* | t | S | ) | Z | k | c | 3 | e | C | \ | 4 | |||
key | 1006 | 11 | 22 | 9 | 79 | 89 | 87 | 77 | 12 | 23 | 18 | 61 | 21 | |
* | 5 | ( | n | x | v | l | + | 6 | 1 | \ | 4 | |||
plaintext | 1007 | 11 | 52 | 61 | 54 | 24 | 4 | 86 | 3 | 71 | 95 | 61 | 21 | |
* | S | \ | U | 7 | # | u | " | f | ~ | \ | 4 | |||
11 | type | 0001 | 1 | |||||||||||
01 | ||||||||||||||
base | 0002 | 1 | ||||||||||||
01 | ||||||||||||||
set | 0003 | 1 | ||||||||||||
001 | ||||||||||||||
special | 1104 | 24 | 27 | 28 | 31 | |||||||||
[ | ^ | _ | | | |||||||||||
keyword | 1105 | 11 | 66 | 7 | 51 | 10 | 74 | 21 | 27 | 12 | 58 | 19 | 33 | |
* | a | & | R | ) | i | 4 | : | + | Y | 2 | @ | |||
key | 1106 | 11 | 3 | 58 | 26 | 40 | 85 | 30 | 18 | 60 | 41 | 19 | 33 | |
* | " | Y | 9 | G | t | = | 1 | [ | H | 2 | @ | |||
plaintext | 1107 | 11 | 34 | 15 | 1 | 69 | 3 | 39 | 10 | 13 | 23 | 18 | 33 | |
* | A | . | d | " | F | ) | , | 6 | 1 | @ | ||||
12 | type | 0001 | 3 | |||||||||||
11 | ||||||||||||||
base | 0002 | 3 | ||||||||||||
11 | ||||||||||||||
set | 0003 | 6 | ||||||||||||
110 | ||||||||||||||
special | 1204 | 2 | 3 | 1 | 3 | 13 | 14 | 12 | 14 | |||||
! | " | " | , | - | + | - | ||||||||
keyword | 1205 | 12 | 47 | 55 | 92 | 55 | 72 | 68 | 33 | 49 | 81 | 71 | 46 | |
+ | N | V | { | V | g | c | @ | P | p | f | M | |||
key | 1206 | 12 | 78 | 13 | 67 | 85 | 84 | 77 | 24 | 2 | 63 | 70 | 46 | |
+ | m | , | b | t | s | l | 7 | ! | ^ | e | M | |||
plaintext | 1207 | 12 | 15 | 64 | 42 | 20 | 1 | 86 | 16 | 50 | 45 | 70 | 46 | |
+ | . | _ | I | 3 | u | / | Q | L | e | M |
Table III - Type Parameters | |||
---|---|---|---|
X | |||
0 | 1 | ||
Y | 0 | keyword | autokey |
1 | vigenere | runningkey |
Table IV - Base Parameters | |||
---|---|---|---|
X | |||
0 | 1 | ||
Y | 0 | - not used - | 36 |
1 | 26 | 62 |
Table V - Special Character Sets | |
---|---|
Set: | Special characters: |
1 2 3 123456789012345678901234567890123 |
|
ALL | !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ |
1XX | !"#$%&'()* |
X1X | +,-./:;<=>? |
XX1 | @[\]^_`{|}~ |
Table VI - Keyword, Key, and Plaintext Character Set |
---|
1 2 3 4 5 6 7 8 9 12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345 |
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ |