<?php
use Yaroslavche\Enigma\Enigma;
use Yaroslavche\Enigma\Rotor\I;
use Yaroslavche\Enigma\Rotor\II;
use Yaroslavche\Enigma\Rotor\III;
use Yaroslavche\Enigma\Reflector\B;
$enigma = new Enigma('ABCDEFGHIJKLMNOPQRSTUVWXYZ');
# RTL [B][I II III][ENTRY]
$enigma->setRotor(new III());
$enigma->setRotor(new II());
$enigma->setRotor(new I());
$enigma->setReflector(new B());
$enigma->setPlugPair('A', 'B');
$enigma->setKey('AAA');
$cipher = $enigma->cryptMessage('TESTMESSAGE'); // 'OLPFHNVFFYN'
$enigma->setKey('AAA');
$message = $enigma->cryptMessage($cipher); // 'TESTMESSAGE'
-
Ring setting
(Ringstellung
) The Rotors, Rotor Encryption Process - Wiring tables
-
The method AbstractRotor::map has a boolean flag argument $reverse, which is a certain sign of a Single Responsibility Principle violation.
(composer phpmd
) - Coverage (
composer coverage
->build/coverage/html/index.html
) - MSI (
composer infection
->build/infection
)
$ composer phpunit
Test data for ring settings. When this test will be passed (seems that valid expected cipher, but need to check) - should be passed all other which are commented out.