FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
Java/ciphers/SimpleSubstitutionCipher.java at master · iDev-git/Java · GitHub
iDev-git
Java
Repository navigation
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
Java
/
ciphers
/
SimpleSubstitutionCipher.java
Copy path
More file actions
More file actions
Latest commit
History
History
History
87 lines (70 loc) · 2.7 KB
Breadcrumbs
Java
/
ciphers
/
SimpleSubstitutionCipher.java
Copy path
File metadata and controls
87 lines (70 loc) · 2.7 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package
ciphers
;
import
java
.
util
.*;
/**
* The simple substitution cipher is a cipher that has been in use for many hundreds of years (an
* excellent history is given in Simon Singhs 'the Code Book'). It basically consists of
* substituting every plaintext character for a different ciphertext character. It differs from the
* Caesar cipher in that the cipher alphabet is not simply the alphabet shifted, it is completely
* jumbled.
*
* @author Hassan Elseoudy
*/
public
class
SimpleSubstitutionCipher
{
/**
* Encrypt text by replacing each element with its opposite character.
*
* @param message
* @param cipherSmall
* @return Encrypted message
*/
public
static
String
encode
(
String
message
,
String
cipherSmall
) {
String
encoded
=
""
;
// This map is used to encode
Map
<
Character
,
Character
>
cipherMap
=
new
HashMap
<
Character
,
Character
>();
char
beginSmallLetter
=
'a'
;
char
beginCapitalLetter
=
'A'
;
cipherSmall
=
cipherSmall
.
toLowerCase
();
String
cipherCapital
=
cipherSmall
.
toUpperCase
();
// To handle Small and Capital letters
for
(
int
i
=
0
;
i
<
cipherSmall
.
length
();
i
++) {
cipherMap
.
put
(
beginSmallLetter
++,
cipherSmall
.
charAt
(
i
));
cipherMap
.
put
(
beginCapitalLetter
++,
cipherCapital
.
charAt
(
i
));
}
for
(
int
i
=
0
;
i
<
message
.
length
();
i
++) {
if
(
Character
.
isAlphabetic
(
message
.
charAt
(
i
)))
encoded
+=
cipherMap
.
get
(
message
.
charAt
(
i
));
else
encoded
+=
message
.
charAt
(
i
);
}
return
encoded
;
}
/**
* Decrypt message by replacing each element with its opposite character in cipher.
*
* @param encryptedMessage
* @param cipherSmall
* @return message
*/
public
static
String
decode
(
String
encryptedMessage
,
String
cipherSmall
) {
String
decoded
=
""
;
Map
<
Character
,
Character
>
cipherMap
=
new
HashMap
<
Character
,
Character
>();
char
beginSmallLetter
=
'a'
;
char
beginCapitalLetter
=
'A'
;
cipherSmall
=
cipherSmall
.
toLowerCase
();
String
cipherCapital
=
cipherSmall
.
toUpperCase
();
for
(
int
i
=
0
;
i
<
cipherSmall
.
length
();
i
++) {
cipherMap
.
put
(
cipherSmall
.
charAt
(
i
),
beginSmallLetter
++);
cipherMap
.
put
(
cipherCapital
.
charAt
(
i
),
beginCapitalLetter
++);
}
for
(
int
i
=
0
;
i
<
encryptedMessage
.
length
();
i
++) {
if
(
Character
.
isAlphabetic
(
encryptedMessage
.
charAt
(
i
)))
decoded
+=
cipherMap
.
get
(
encryptedMessage
.
charAt
(
i
));
else
decoded
+=
encryptedMessage
.
charAt
(
i
);
}
return
decoded
;
}
/** TODO remove main and make JUnit Testing */
public
static
void
main
(
String
[]
args
) {
String
a
=
encode
(
"defend the east wall of the castle"
,
"phqgiumeaylnofdxjkrcvstzwb"
);
String
b
=
decode
(
a
,
"phqgiumeaylnofdxjkrcvstzwb"
);
System
.
out
.
println
(
b
);
}
}
Back
|
FazBrowse Home
|
New Git URL