Skip to content

Commit 69dbd5b

Browse files
committed
add oneTimePad algorithm
1 parent 2563a88 commit 69dbd5b

File tree

5 files changed

+190
-38
lines changed

5 files changed

+190
-38
lines changed

.idea/workspace.xml

Lines changed: 63 additions & 32 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

caesarCipher.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
const caesarCipher = (mainString, num, cb) => {
22
console.log(mainString);
3-
var newString = '', currentIndex, newIndex;
43

5-
myString = mainString.toLowerCase().split('');
6-
var alphabet = 'abcdefghijklmnopqrstuvwxyz'.split('');
4+
let newString = '', currentIndex, newIndex;
75

8-
var index = 0;
6+
let myString = mainString.toLowerCase().split('');
7+
let alphabet = 'abcdefghijklmnopqrstuvwxyz'.split('');
8+
9+
let index = 0;
910
myString.map((val) => {
1011
if (!alphabet.includes(val)) {
1112
newString += val;
@@ -20,7 +21,6 @@ const caesarCipher = (mainString, num, cb) => {
2021
if (newIndex < 0) newIndex += 26;
2122

2223
if (mainString.charAt(index) == val.toUpperCase()) {
23-
console.log('Uppercase');
2424
newString += alphabet[newIndex].toUpperCase();
2525
} else {
2626
newString += alphabet[newIndex];
@@ -32,7 +32,7 @@ const caesarCipher = (mainString, num, cb) => {
3232
cb(newString);
3333
};
3434

35-
caesarCipher('Zoo Keeper', -1, (result) => {
35+
caesarCipher('Bqq Mggrgt', -55, (result) => {
3636
console.log('Result is: ' + result);
3737
});
3838

file.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
This is first line.
2+
This another line.

fileRead.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
let fs = require('fs');
2+
fs.readFile('./file.txt', 'utf8', (err, data) => {
3+
if (err) {
4+
console.log('Error is: ' + err);
5+
} else {
6+
let array = data.split('\n');
7+
console.log(array);
8+
}
9+
});

oneTimePad.js

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
oneTimePadMethodEncryption = (message, oneTimePad, cb) => {
2+
let lowerCaseCharacterList = 'abcdefghijklmnopqrstuvwxyz'.split('');
3+
let upperCaseCharacterList = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
4+
let length = message.length;
5+
let encryptedMessage = '';
6+
7+
if (length > oneTimePad.length) {
8+
return cb('Length of oneTimePad is smaller than the message length.', null);
9+
}
10+
11+
for (let index = 0; index < message.length; index ++) {
12+
13+
let messageCharacter = message.charAt(index);
14+
let oneTimePadCharacter = oneTimePad.charAt(index);
15+
let messageCharacterIndex, oneTimePadCharacterIndex;
16+
let newCharacter, newCharacterIndex;
17+
18+
if (messageCharacter == messageCharacter.toUpperCase()) {
19+
messageCharacterIndex = upperCaseCharacterList.indexOf(messageCharacter) + 1;
20+
} else {
21+
messageCharacterIndex = lowerCaseCharacterList.indexOf(messageCharacter) + 1;
22+
}
23+
24+
if (oneTimePadCharacter == oneTimePadCharacter.toUpperCase()) {
25+
oneTimePadCharacterIndex = upperCaseCharacterList.indexOf(oneTimePadCharacter) + 1;
26+
} else {
27+
oneTimePadCharacterIndex = lowerCaseCharacterList.indexOf(oneTimePadCharacter) + 1;
28+
}
29+
30+
newCharacterIndex = (messageCharacterIndex + oneTimePadCharacterIndex) % 26;
31+
32+
// newCharacterIndex --;
33+
if (newCharacterIndex <= 0) newCharacterIndex += 25;
34+
35+
newCharacter = (messageCharacter == messageCharacter.toUpperCase()) ? upperCaseCharacterList[newCharacterIndex] : lowerCaseCharacterList[newCharacterIndex];
36+
console.log(messageCharacter + '(' + messageCharacterIndex + ') ' + oneTimePadCharacter + '(' + oneTimePadCharacterIndex + ') ' + newCharacter + '(' + newCharacterIndex + ')');
37+
38+
encryptedMessage += newCharacter;
39+
}
40+
41+
console.log('message : ' + message);
42+
console.log('oneTime Pad: ' + oneTimePad);
43+
44+
return cb(null, encryptedMessage);
45+
};
46+
47+
oneTimePadMethodDecryption = (message, oneTimePad, cb) => {
48+
let lowerCaseCharacterList = 'abcdefghijklmnopqrstuvwxyz'.split('');
49+
let upperCaseCharacterList = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
50+
let length = message.length;
51+
let encryptedMessage = '';
52+
53+
if (length > oneTimePad.length) {
54+
return cb('Length of oneTimePad is smaller than the message length.', null);
55+
}
56+
57+
for (let index = 0; index < message.length; index ++) {
58+
59+
let messageCharacter = message.charAt(index);
60+
let oneTimePadCharacter = oneTimePad.charAt(index);
61+
let messageCharacterIndex, oneTimePadCharacterIndex;
62+
let newCharacter, newCharacterIndex;
63+
64+
if (messageCharacter == messageCharacter.toUpperCase()) {
65+
messageCharacterIndex = upperCaseCharacterList.indexOf(messageCharacter);
66+
} else {
67+
messageCharacterIndex = lowerCaseCharacterList.indexOf(messageCharacter);
68+
}
69+
70+
// messageCharacterIndex ++;
71+
72+
if (oneTimePadCharacter == oneTimePadCharacter.toUpperCase()) {
73+
oneTimePadCharacterIndex = upperCaseCharacterList.indexOf(oneTimePadCharacter);
74+
} else {
75+
oneTimePadCharacterIndex = lowerCaseCharacterList.indexOf(oneTimePadCharacter);
76+
}
77+
78+
oneTimePadCharacterIndex ++;
79+
80+
newCharacterIndex = (messageCharacterIndex - oneTimePadCharacterIndex);
81+
if (newCharacterIndex < 0) newCharacterIndex = newCharacterIndex + 26;
82+
83+
84+
newCharacter = (messageCharacter == messageCharacter.toUpperCase()) ? upperCaseCharacterList[newCharacterIndex] : lowerCaseCharacterList[newCharacterIndex];
85+
console.log(messageCharacter + '(' + messageCharacterIndex + ') ' + oneTimePadCharacter + '(' + oneTimePadCharacterIndex + ') ' + newCharacter + '(' + newCharacterIndex + ')');
86+
87+
encryptedMessage += newCharacter;
88+
}
89+
90+
console.log('message : ' + message);
91+
console.log('oneTime Pad: ' + oneTimePad);
92+
93+
return cb(null, encryptedMessage);
94+
};
95+
96+
oneTimePadMethodEncryption('M', 'M', (err, encryptedMessage) => {
97+
if (err) {
98+
console.log(err);
99+
} else {
100+
console.log('Encrypted Message: ' + encryptedMessage);
101+
console.log('----------------------------------------------------------------------------------------');
102+
oneTimePadMethodDecryption(encryptedMessage, 'M', (err, decryptedMessage) => {
103+
if (err) {
104+
console.log(err);
105+
} else {
106+
console.log('Decrypted Message: ' + decryptedMessage) ;
107+
}
108+
});
109+
}
110+
});

0 commit comments

Comments
 (0)