-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtransposition.js
109 lines (90 loc) · 2.91 KB
/
transposition.js
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
//let message = 'DEPARTMENTOFCOMPUTERSCIENCEANDENGINEERING';
let message = 'abcdefghijklmn';
let sector = 3;
let transposition = (myString, column, cb) => {
createMatrix(myString, column, (err, matrix, row) => {
let transposedMessage = '';
let decryptMessage = '';
if (err) {
} else {
for (let j=0; j<column; j++) {
for (let i=0; i<row; i++) {
if (matrix[i][j] == null) {
decryptMessage += '$';
} else {
transposedMessage += matrix[i][j];
decryptMessage += matrix[i][j];
}
}
}
return cb(null, transposedMessage, decryptMessage, row);
}
});
};
let createMatrix = (myString, column, cb) => {
myString = myString.split('');
let row,
length = myString.length,
tempRowF = length/column,
tempRowR = parseInt(length/column),
matrix = new Array();
if (tempRowR == tempRowF) {
row = tempRowR;
} else {
row = tempRowR + 1;
}
let index = 0;
for (let i=0; i<row; i++) {
matrix[i] = new Array();
}
for (let i=0; i<row; i++) {
for (let j=0; j<column; j++) {
if (myString[index] == ' ') {
matrix[i][j] = '-';
} else if (index >= length) {
matrix[i][j] = null;
} else {
matrix[i][j] = myString[index];
}
index ++;
}
}
return cb(null, matrix, row);
};
let decryptMessage = (encryptedMessage, column, cb) => {
encryptedMessage = encryptedMessage.split('');
let decryptMessage = '';
let reservedMessage = '';
let length = encryptedMessage.length - 1;
let index = 0;
for (let i=0; i<=length; i++) {
if (encryptedMessage[index] == '$') {
reservedMessage += encryptedMessage[index];
} else {
decryptMessage += encryptedMessage[index];
reservedMessage += encryptedMessage[index];
}
index += column;
if (index >= length) {
index = index - length;
}
}
cb(null, decryptMessage, reservedMessage);
};
transposition(message, sector, (err, encryptMessage, reservedMessage, row) => {
console.log('MESSAGE: ' + message + '\n');
if (err) {
} else {
console.log('AFTER ENCRYPTION');
console.log(' Encrypted message: ' + encryptMessage);
console.log(' Reserved message:' + reservedMessage);
decryptMessage(reservedMessage, row, (err, decryptedMessage, reservedMessage) => {
if (err) {
} else {
console.log('AFTER DECRYPTION');
console.log(' Decryped message: ' + decryptedMessage);
console.log(' Reserved message: ' + reservedMessage);
}
});
}
});