Tạo class SimpleVigenereCipher và 2 phương thức Encrypt và Decrypt để mã hóa và giải mã các ký tự A-Z
| 0 | 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 |
| 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 |
|---|
$$y_i = (x_i + k_{\text{i mod m}})\text{ mod 26}$$
Giải mã$$x_i = (y_i - k_{\text{i mod m}})\text{ mod 26}$$
Ví dụ| Input | |
|---|---|
| key | CNTT |
| message | TRUONG DAI HOC TAI NGUYEN VA MOI TRUONG |
| Message | Key | $$y_i = (x_i + k_{\text{i mod m}})\text{ mod 26}$$ | Encrypt | |
|---|---|---|---|---|
| T | C | (T + C) % 26 | (19 + 2) % 26 = 21 | V |
| R | N | (R + N) % 26 | (17 + 13) % 26 = 4 | E |
| U | T | (U + T) % 26 | (20 + 19) % 26 = 13 | N |
| O | T | (O + T) % 26 | (14 + 19) % 26 = 7 | H |
| N | C | (N + C) % 26 | (13 + 2) % 26 = 15 | P |
| G | N | (G + N) % 26 | (6 + 13) % 26 = 19 | T |
| D | T | (D + T) % 26 | (3 + 19) % 26 = 22 | W |
| A | T | (A + T) % 26 | (0 + 19) % 26 = 19 | T |
| I | C | (I + C) % 26 | (8 + 2) % 26 = 10 | K |
| H | N | (H + N) % 26 | (7 + 13) % 26 = 20 | U |
| O | T | (O + T) % 26 | (14 + 19) % 26 = 7 | H |
| C | T | (C + T) % 26 | (2 + 19) % 26 = 21 | V |
| T | C | (T + C) % 26 | (19 + 2) % 26 = 21 | V |
| A | N | (A + N) % 26 | (0 + 13) % 26 = 13 | N |
| I | T | (I + T) % 26 | (8 + 19) % 26 = 1 | B |
| N | T | (N + T) % 26 | (13 + 19) % 26 = 6 | G |
| G | C | (G + C) % 26 | (6 + 2) % 26 = 8 | I |
| U | N | (U + N) % 26 | (20 + 13) % 26 = 7 | H |
| Y | T | (Y + T) % 26 | (24 + 19) % 26 = 17 | R |
| E | T | (E + T) % 26 | (4 + 19) % 26 = 23 | X |
| N | C | (N + C) % 26 | (13 + 2) % 26 = 15 | P |
| V | N | (V + N) % 26 | (21 + 13) % 26 = 8 | I |
| A | T | (A + T) % 26 | (0 + 19) % 26 = 19 | T |
| M | T | (M + T) % 26 | (12 + 19) % 26 = 5 | F |
| O | C | (O + C) % 26 | (14 + 2) % 26 = 16 | Q |
| I | N | (I + N) % 26 | (8 + 13) % 26 = 21 | V |
| T | T | (T + T) % 26 | (19 + 19) % 26 = 12 | M |
| R | T | (R + T) % 26 | (17 + 19) % 26 = 10 | K |
| U | C | (U + C) % 26 | (20 + 2) % 26 = 22 | W |
| O | N | (O + N) % 26 | (14 + 13) % 26 = 1 | B |
| N | T | (N + T) % 26 | (13 + 19) % 26 = 6 | G |
| G | T | (G + T) % 26 | (6 + 19) % 26 = 25 | Z |
| Encrypt | Key | $$x_i = (y_i - k_{\text{i mod m}})\text{ mod 26}$$ | Decrypt | |
|---|---|---|---|---|
| V | C | (T - C) % 26 | (19 - 2) % 26 = 17 | T |
| E | N | (R - N) % 26 | (17 - 13) % 26 = 4 | R |
| N | T | (U - T) % 26 | (20 - 19) % 26 = 1 | U |
| H | T | (O - T) % 26 | (14 - 19) % 26 = 21 | O |
| P | C | (N - C) % 26 | (13 - 2) % 26 = 11 | N |
| T | N | (G - N) % 26 | (6 - 13) % 26 = 19 | G |
| W | T | (D - T) % 26 | (3 - 19) % 26 = 10 | D |
| T | T | (A - T) % 26 | (0 - 19) % 26 = 7 | A |
| K | C | (I - C) % 26 | (8 - 2) % 26 = 6 | I |
| U | N | (H - N) % 26 | (7 - 13) % 26 = 20 | H |
| H | T | (O - T) % 26 | (14 - 19) % 26 = 21 | O |
| V | T | (C - T) % 26 | (2 - 19) % 26 = 9 | C |
| V | C | (T - C) % 26 | (19 - 2) % 26 = 17 | T |
| N | N | (A - N) % 26 | (0 - 13) % 26 = 13 | A |
| B | T | (I - T) % 26 | (8 - 19) % 26 = 15 | I |
| G | T | (N - T) % 26 | (13 - 19) % 26 = 20 | N |
| I | C | (G - C) % 26 | (6 - 2) % 26 = 4 | G |
| H | N | (U - N) % 26 | (20 - 13) % 26 = 7 | U |
| R | T | (Y - T) % 26 | (24 - 19) % 26 = 5 | Y |
| X | T | (E - T) % 26 | (4 - 19) % 26 = 11 | E |
| P | C | (N - C) % 26 | (13 - 2) % 26 = 11 | N |
| I | N | (V - N) % 26 | (21 - 13) % 26 = 8 | V |
| T | T | (A - T) % 26 | (0 - 19) % 26 = 7 | A |
| F | T | (M - T) % 26 | (12 - 19) % 26 = 19 | M |
| Q | C | (O - C) % 26 | (14 - 2) % 26 = 12 | O |
| V | N | (I - N) % 26 | (8 - 13) % 26 = 21 | I |
| M | T | (T - T) % 26 | (19 - 19) % 26 = 0 | T |
| K | T | (R - T) % 26 | (17 - 19) % 26 = 24 | R |
| W | C | (U - C) % 26 | (20 - 2) % 26 = 18 | U |
| B | N | (O - N) % 26 | (14 - 13) % 26 = 1 | O |
| G | T | (N - T) % 26 | (13 - 19) % 26 = 20 | N |
| Z | T | (G - T) % 26 | (6 - 19) % 26 = 13 | G |
Tạo class VigenereCipher và 2 phương thức Encrypt và Decrypt để mã hóa và giải mã các ký tự bất kỳ