|
| 1 | +let message = 'DEPARTMENTOFCOMPUTERSCIENCEANDENGINEERING'; |
| 2 | +let sector = 10; |
| 3 | + |
| 4 | +let transposition = (myString, column, cb) => { |
| 5 | + |
| 6 | + createMatrix(myString, column, (err, matrix, row) => { |
| 7 | + let transposedMessage = ''; |
| 8 | + let decryptMessage = ''; |
| 9 | + |
| 10 | + if (err) { |
| 11 | + |
| 12 | + } else { |
| 13 | + for (let j=0; j<column; j++) { |
| 14 | + for (let i=0; i<row; i++) { |
| 15 | + if (matrix[i][j] == null) { |
| 16 | + decryptMessage += '$'; |
| 17 | + } else { |
| 18 | + transposedMessage += matrix[i][j]; |
| 19 | + decryptMessage += matrix[i][j]; |
| 20 | + } |
| 21 | + } |
| 22 | + } |
| 23 | + return cb(null, transposedMessage, decryptMessage, row); |
| 24 | + } |
| 25 | + }); |
| 26 | +}; |
| 27 | + |
| 28 | +let createMatrix = (myString, column, cb) => { |
| 29 | + myString = myString.split(''); |
| 30 | + let row, |
| 31 | + length = myString.length, |
| 32 | + tempRowF = length/column, |
| 33 | + tempRowR = parseInt(length/column), |
| 34 | + matrix = new Array(); |
| 35 | + |
| 36 | + if (tempRowR == tempRowF) { |
| 37 | + row = tempRowR; |
| 38 | + } else { |
| 39 | + row = tempRowR + 1; |
| 40 | + } |
| 41 | + |
| 42 | + let index = 0; |
| 43 | + |
| 44 | + for (let i=0; i<row; i++) { |
| 45 | + matrix[i] = new Array(); |
| 46 | + } |
| 47 | + |
| 48 | + for (let i=0; i<row; i++) { |
| 49 | + for (let j=0; j<column; j++) { |
| 50 | + if (myString[index] == ' ') { |
| 51 | + matrix[i][j] = '-'; |
| 52 | + } else if (index >= length) { |
| 53 | + matrix[i][j] = null; |
| 54 | + } else { |
| 55 | + matrix[i][j] = myString[index]; |
| 56 | + } |
| 57 | + index ++; |
| 58 | + } |
| 59 | + } |
| 60 | + |
| 61 | + return cb(null, matrix, row); |
| 62 | +}; |
| 63 | + |
| 64 | +let decryptMessage = (encryptedMessage, column, cb) => { |
| 65 | + encryptedMessage = encryptedMessage.split(''); |
| 66 | + let decryptMessage = ''; |
| 67 | + let reservedMessage = ''; |
| 68 | + let length = encryptedMessage.length - 1; |
| 69 | + let index = 0; |
| 70 | + for (let i=0; i<length; i++) { |
| 71 | + if (encryptedMessage[index] == '$') { |
| 72 | + reservedMessage += encryptedMessage[index]; |
| 73 | + } else { |
| 74 | + decryptMessage += encryptedMessage[index]; |
| 75 | + reservedMessage += encryptedMessage[index]; |
| 76 | + } |
| 77 | + |
| 78 | + index += column; |
| 79 | + |
| 80 | + if (index >= length) { |
| 81 | + index = index - length; |
| 82 | + } |
| 83 | + } |
| 84 | + cb(null, decryptMessage, reservedMessage); |
| 85 | +}; |
| 86 | + |
| 87 | +transposition(message, sector, (err, encryptMessage, reservedMessage, row) => { |
| 88 | + console.log('MESSAGE: ' + message + '\n'); |
| 89 | + |
| 90 | + if (err) { |
| 91 | + |
| 92 | + } else { |
| 93 | + console.log('AFTER ENCRYPTION'); |
| 94 | + console.log(' Encrypted message: ' + encryptMessage); |
| 95 | + console.log(' Reserved message:' + reservedMessage); |
| 96 | + decryptMessage(reservedMessage, row, (err, decryptedMessage, reservedMessage) => { |
| 97 | + if (err) { |
| 98 | + |
| 99 | + } else { |
| 100 | + console.log('AFTER DECRYPTION'); |
| 101 | + console.log(' Decryped message: ' + decryptedMessage); |
| 102 | + console.log(' Reserved message: ' + reservedMessage); |
| 103 | + } |
| 104 | + }); |
| 105 | + } |
| 106 | +}); |
| 107 | + |
0 commit comments