Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
E
Enigma
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Wiki
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Michael
Enigma
Commits
ff923ce6
Commit
ff923ce6
authored
5 years ago
by
Flori N
Browse files
Options
Downloads
Patches
Plain Diff
Klasse Walze
parent
209335ee
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
src/main/java/Enigma/model/Codebuch.java
+1
-1
1 addition, 1 deletion
src/main/java/Enigma/model/Codebuch.java
src/main/java/Enigma/model/Walze.java
+224
-0
224 additions, 0 deletions
src/main/java/Enigma/model/Walze.java
with
225 additions
and
1 deletion
src/main/java/Enigma/model/Codebuch.java
+
1
−
1
View file @
ff923ce6
...
@@ -5,7 +5,7 @@ package Enigma.model;
...
@@ -5,7 +5,7 @@ package Enigma.model;
* Jeder Enigma gehörte auch ein Codebuch bei, welches notwenidg war um die Nachrichten zu ver/entschlüsseln.
* Jeder Enigma gehörte auch ein Codebuch bei, welches notwenidg war um die Nachrichten zu ver/entschlüsseln.
* Im Codebuch standen für jeden Tag des Monats die notwendigen Einstellungen welche vorgenommen werden
* Im Codebuch standen für jeden Tag des Monats die notwendigen Einstellungen welche vorgenommen werden
* mussten um die Texte zu ver/entschlüsseln.
* mussten um die Texte zu ver/entschlüsseln.
* Hiernach wurden die Walzen eingesetzt, die Ringe für den Rücksprung der Walze
n
gesetzt und deren Grundeinstellung
* Hiernach wurden die Walzen eingesetzt, die Ringe für den Rücksprung der Walze gesetzt und deren Grundeinstellung
* vorgenommen.
* vorgenommen.
* Bei der Enigma um welche es hier geht (Enigma I) gab es zusätzlich ein Steckbrett, welches ebenfalls im Codebuch
* Bei der Enigma um welche es hier geht (Enigma I) gab es zusätzlich ein Steckbrett, welches ebenfalls im Codebuch
* festgelegt war.
* festgelegt war.
...
...
This diff is collapsed.
Click to expand it.
src/main/java/Enigma/model/Walze.java
0 → 100644
+
224
−
0
View file @
ff923ce6
package
Enigma.model
;
public
class
Walze
{
Character
buchstabe
=
null
;
Character
ringstellung
=
null
;
int
walzennr
=
0
;
int
iPositionBuchstabe
=
0
;
int
iPositionBuchstabeRe
=
0
;
Character
[]
walze
=
new
Character
[
25
];
/**
* Gibt die Parameter der Walze mit
*
* @param walzennr : int : Nummer der gewaehlten Walze
* @param buchstabe : Character : Grundeinstellung der Walze
* @param ringstellung : Character : Einstellung des Notch
*/
public
Walze
(
int
walzennr
,
Character
buchstabe
,
Character
ringstellung
)
{
this
.
walzennr
=
walzennr
;
this
.
buchstabe
=
buchstabe
;
this
.
ringstellung
=
ringstellung
;
}
/**
* @return buchstabe : Character : gibt den neuen Buchstaben zurueck
*/
public
char
getBuchstabe
()
{
return
buchstabe
;
}
/**
* Gibt die Grundeinstellung der Walze ein. Nur Buchstaben von A - Z sind zugelassen.
* Buchstaben werden automatisch in Grossbuchstaben umgewandelt.
* Im Fehlerfall wird die Grundeinstellung der Walze standardmaessig auf 'A' gesetzt.
*
* @param buchstabe : Character : Grundeinstellung der Walze
*/
private
void
setBuchstabe
(
Character
buchstabe
)
{
this
.
buchstabe
.
toUpperCase
(
buchstabe
);
if
(
buchstabe
.
isLetter
(
buchstabe
))
{
this
.
buchstabe
=
buchstabe
;
}
else
{
this
.
buchstabe
=
'A'
;
}
}
/**
* @return ringstellung : Character : gibt die neue Ringstellung zurueck
*/
public
char
getRingstellung
()
{
return
ringstellung
;
}
/**
* Gibt die Initiale Ringstellung der Walze an.
* Es sind nur Zahlen von 1 - 26 zugelassen.
* Im Fehlerfall wird die Ringstellung standardmaessig auf '1' gesetzt.
*
* @param ringstellung : Character : Punkt an dem die Walze umspringt
*/
private
void
setRingstellung
(
Character
ringstellung
)
{
if
(
buchstabe
.
isDigit
(
ringstellung
)
&&
ringstellung
>
0
&&
ringstellung
<=
26
)
{
this
.
ringstellung
=
ringstellung
;
}
else
{
this
.
ringstellung
=
'1'
;
}
}
/**
* @return walzennr : int : gibt die Walzennummer zurueck
*/
public
int
getWalzennr
()
{
return
walzennr
;
}
/**
* Definiert die Walze. Es stehen fuenf Walze zur Auswahl.
*
* @param walzennr : int : setzt die Walzennummer
*/
private
void
setWalzennr
(
int
walzennr
)
{
if
(
walzennr
>
0
&&
walzennr
<
6
)
{
this
.
walzennr
=
walzennr
;
}
else
{
System
.
err
.
println
(
"Keine gültige Walzennummer"
);
}
}
/**
* Sortiert den Walzennummern das passenden Character-Array mittels switch zu.
*
* @return walze : Character[] : gibt die gewaehlte Walze zurueck
*/
private
Character
[]
walzenNummer
()
{
//Walze nach der Cheffrierung
Character
[]
walzeEins
=
{
'E'
,
'K'
,
'M'
,
'F'
,
'L'
,
'G'
,
'D'
,
'Q'
,
'V'
,
'Z'
,
'N'
,
'T'
,
'O'
,
'W'
,
'Y'
,
'H'
,
'X'
,
'U'
,
'S'
,
'P'
,
'A'
,
'I'
,
'B'
,
'R'
,
'C'
,
'J'
};
Character
[]
walzeZwei
=
{
'A'
,
'J'
,
'D'
,
'K'
,
'S'
,
'I'
,
'R'
,
'U'
,
'X'
,
'B'
,
'L'
,
'H'
,
'W'
,
'T'
,
'M'
,
'C'
,
'Q'
,
'G'
,
'Z'
,
'N'
,
'P'
,
'Y'
,
'F'
,
'V'
,
'O'
,
'E'
};
Character
[]
walzeDrei
=
{
'B'
,
'D'
,
'F'
,
'H'
,
'J'
,
'L'
,
'C'
,
'P'
,
'R'
,
'T'
,
'X'
,
'V'
,
'Z'
,
'N'
,
'Y'
,
'E'
,
'I'
,
'W'
,
'G'
,
'A'
,
'K'
,
'M'
,
'U'
,
'S'
,
'Q'
,
'O'
};
Character
[]
walzeVier
=
{
'E'
,
'S'
,
'O'
,
'V'
,
'P'
,
'Z'
,
'J'
,
'A'
,
'Y'
,
'Q'
,
'U'
,
'I'
,
'R'
,
'H'
,
'X'
,
'L'
,
'N'
,
'F'
,
'T'
,
'G'
,
'K'
,
'D'
,
'C'
,
'M'
,
'W'
,
'B'
};
Character
[]
walzeFuenf
=
{
'V'
,
'Z'
,
'B'
,
'R'
,
'G'
,
'I'
,
'T'
,
'Y'
,
'U'
,
'P'
,
'S'
,
'D'
,
'N'
,
'H'
,
'L'
,
'X'
,
'A'
,
'W'
,
'M'
,
'J'
,
'Q'
,
'O'
,
'F'
,
'E'
,
'C'
,
'K'
};
switch
(
getWalzennr
())
{
case
1
:
walze
=
walzeEins
;
break
;
case
2
:
walze
=
walzeZwei
;
break
;
case
3
:
walze
=
walzeDrei
;
break
;
case
4
:
walze
=
walzeVier
;
break
;
case
5
:
walze
=
walzeFuenf
;
break
;
}
return
walze
;
}
/**
* Ermittelt die Position des Buchstaben auf der Alphabetswalze, um die Position mit
* der Cheffrierung auf der gewaehlten Walze abgleichen zu koennen.
*
* @return iPositionBuchstabe : int : Position des Buchstaben im Array
*/
public
int
positionBuchstabe
()
{
//Alphabetswalze
Character
[]
walzeAlpha
=
{
'A'
,
'B'
,
'C'
,
'D'
,
'E'
,
'F'
,
'G'
,
'H'
,
'I'
,
'J'
,
'K'
,
'L'
,
'M'
,
'N'
,
'O'
,
'P'
,
'Q'
,
'R'
,
'S'
,
'T'
,
'U'
,
'V'
,
'W'
,
'X'
,
'Y'
,
'Z'
};
int
index
=
0
;
//Ermittelt die Position des Buchstaben buchstabe auf der Alphabetswalze
for
(
index
=
0
;
index
<
walzeAlpha
.
length
;
index
++)
{
if
(
buchstabe
.
equals
(
walzeAlpha
[
index
]))
{
iPositionBuchstabe
=
index
;
break
;
}
}
return
iPositionBuchstabe
;
}
/**
* Cheffriert den Buchstaben an der Position aus der Methode positionBuchstabe()
* anhand der gewaehlten Walze.
*
* @param iPositionBuchstabe : int : Position des zu cheffrierenden Buchstabens
* @param walze : Character[] : ausgewaehlte Walze
* @return cheffrierterBuchstabe : Character : cheffrierter Buchstabe
*/
public
Character
codierterBuchstabe
(
int
iPositionBuchstabe
,
Character
[]
walze
)
{
Character
codierterBuchstabe
=
walze
[
iPositionBuchstabe
];
return
codierterBuchstabe
;
}
/**
* Nimmt die Startposition, die aus der Walzeneinstellung geholt wird und
* erhoeht sie um eins.
* Die Variable wird ueberschrieben und zaehlt von nun an die Position mit.
* Ab Position 25 wird wieder bei 0 angefangen.
*
* @param iPositionBuchstabe : int : alte Position der Walze
* @return iPositionBuchstabe : int : neue Position der Walze
*/
public
int
vorstellenDerWalze
(
int
iPositionBuchstabe
)
{
if
(
iPositionBuchstabe
==
25
)
{
iPositionBuchstabe
=
0
;
}
else
{
iPositionBuchstabe
+=
1
;
}
return
iPositionBuchstabe
;
}
/**
* Ermittelt die Position des Buchstaben auf der gewaehlten Walze, um die Position mit
* der Cheffrierung auf der AlphaWalze abgleichen zu koennen.
*
* @param walzennr : int : gibt die gewaehlte Walze zurueck
* @return iPositionBuchstabeRe : int : Position des Buchstaben im Array
*/
public
int
positionBuchstabeReverse
(
int
walzennr
)
{
int
index
=
0
;
//Ermittelt die Position des Buchstaben buchstabe auf der Alphabetswalze
for
(
index
=
0
;
index
<
walze
.
length
;
index
++)
{
if
(
buchstabe
.
equals
(
walze
[
index
]))
{
iPositionBuchstabeRe
=
index
;
break
;
}
}
return
iPositionBuchstabeRe
;
}
/**
* Cheffriert den Buchstaben an der Position aus der Methode positionBuchstabeReverse()
* anhand der AlphaWalze.
*
* @param iPositionBuchstabeRe : int : Position des zu cheffrierenden Buchstabens
* @return codierterBuchstabeRe : Character : cheffrierter Buchstabe
*/
public
Character
codierterBuchstabeReverse
(
int
iPositionBuchstabeRe
)
{
//Alphawalze
Character
[]
walzeAlpha
=
{
'A'
,
'B'
,
'C'
,
'D'
,
'E'
,
'F'
,
'G'
,
'H'
,
'I'
,
'J'
,
'K'
,
'L'
,
'M'
,
'N'
,
'O'
,
'P'
,
'Q'
,
'R'
,
'S'
,
'T'
,
'U'
,
'V'
,
'W'
,
'X'
,
'Y'
,
'Z'
};
Character
codierterBuchstabeRe
=
walzeAlpha
[
iPositionBuchstabeRe
];
return
codierterBuchstabeRe
;
}
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment