summaryrefslogtreecommitdiff
path: root/t/full-enigma.t
blob: 069f4a1c78f9e4e29d3ab4bb9ed86aea73cce475 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!perl 
use DAKKAR::p 'test';
use Test::Enigmatic;
use Enigmatic::Machine;
 
sub real_machine {
    return  Enigmatic::Machine->new({
        reflector => 'B_thin',
        rotors => [ 'I''IV''II''Beta' ],
        plugboard => 'AT BL DF GJ HM NW OP QY RZ VX',
        ring_settings => [ 'V''A''A''A' ],
        rotor_positions => [ 'A''N''J''V' ],
    });
}
 
my $plaintext = <<'EOPLAIN';
VONV ONJL OOKS JHFF TTTE
INSE INSD REIZ WOYY QNNS
NEUN INHA LTXX BEIA NGRI
FFUN TERW ASSE RGED RUEC
KTYW ABOS XLET ZTER GEGN
ERST ANDN ULAC HTDR EINU
LUHR MARQ UANT ONJO TANE
UNAC HTSE YHSD REIY ZWOZ
WONU LGRA DYAC HTSM YSTO
SSEN ACHX EKNS VIER MBFA
ELLT YNNN NNNO OOVI ERYS
ICHT EINS NULL
EOPLAIN
 
my $ciphertext = <<'EOCIPHER';
NCZW VUSX PNYM INHZ XMQX
SFWX WLKJ AHSH NMCO CCAK
UQPM KCSM HKSE INJU SBLK
IOSX CKUB HMLL XCSJ USRR
DVKO HULX WCCB GVLI YXEO
AHXR HKKF VDRE WEZL XOBA
FGYU JQUK GRTV UKAM EURB
VEKS UHHV OYHA BCJW MAKL
FKLM YFVN RIZR VVRT KOFD
ANJM OLBG FFLE OPRG TFLV
RHOW OPBE KVWM UQFM PWPA
RMFH AGKX IIBG
EOCIPHER
 
Test::Enigmatic::test_full_machine(
    \&real_machine,
    $plaintext,
    $ciphertext);
 
done_testing();
 
__END__
 
=head1 AUTHOR
 
Gianni Ceccarelli <dakkar@thenautilus.net>
 
=head1 COPYRIGHT AND LICENSE
 
This software is copyright (c) 2011 by Gianni Ceccarelli.
 
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, version 3.
 
=cut