Cryptography

Vigenere Cipher

Bài 1: Simple Vigenere Cipher

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

012345678910 11121314151617181920 2122232425
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Mã hóa

$$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
Encrypt
MessageKey$$y_i = (x_i + k_{\text{i mod m}})\text{ mod 26}$$Encrypt
TC(T + C) % 26(19 + 2) % 26 = 21V
RN(R + N) % 26(17 + 13) % 26 = 4E
UT(U + T) % 26(20 + 19) % 26 = 13N
OT(O + T) % 26(14 + 19) % 26 = 7H
NC(N + C) % 26(13 + 2) % 26 = 15P
GN(G + N) % 26(6 + 13) % 26 = 19T
DT(D + T) % 26(3 + 19) % 26 = 22W
AT(A + T) % 26(0 + 19) % 26 = 19T
IC(I + C) % 26(8 + 2) % 26 = 10K
HN(H + N) % 26(7 + 13) % 26 = 20U
OT(O + T) % 26(14 + 19) % 26 = 7H
CT(C + T) % 26(2 + 19) % 26 = 21V
TC(T + C) % 26(19 + 2) % 26 = 21V
AN(A + N) % 26(0 + 13) % 26 = 13N
IT(I + T) % 26(8 + 19) % 26 = 1B
NT(N + T) % 26(13 + 19) % 26 = 6G
GC(G + C) % 26(6 + 2) % 26 = 8I
UN(U + N) % 26(20 + 13) % 26 = 7H
YT(Y + T) % 26(24 + 19) % 26 = 17R
ET(E + T) % 26(4 + 19) % 26 = 23X
NC(N + C) % 26(13 + 2) % 26 = 15P
VN(V + N) % 26(21 + 13) % 26 = 8I
AT(A + T) % 26(0 + 19) % 26 = 19T
MT(M + T) % 26(12 + 19) % 26 = 5F
OC(O + C) % 26(14 + 2) % 26 = 16Q
IN(I + N) % 26(8 + 13) % 26 = 21V
TT(T + T) % 26(19 + 19) % 26 = 12M
RT(R + T) % 26(17 + 19) % 26 = 10K
UC(U + C) % 26(20 + 2) % 26 = 22W
ON(O + N) % 26(14 + 13) % 26 = 1B
NT(N + T) % 26(13 + 19) % 26 = 6G
GT(G + T) % 26(6 + 19) % 26 = 25Z
Descrypt
Encrypt Key $$x_i = (y_i - k_{\text{i mod m}})\text{ mod 26}$$ Decrypt
VC(T - C) % 26(19 - 2) % 26 = 17T
EN(R - N) % 26(17 - 13) % 26 = 4R
NT(U - T) % 26(20 - 19) % 26 = 1U
HT(O - T) % 26(14 - 19) % 26 = 21O
PC(N - C) % 26(13 - 2) % 26 = 11N
TN(G - N) % 26(6 - 13) % 26 = 19G
WT(D - T) % 26(3 - 19) % 26 = 10D
TT(A - T) % 26(0 - 19) % 26 = 7A
KC(I - C) % 26(8 - 2) % 26 = 6I
UN(H - N) % 26(7 - 13) % 26 = 20H
HT(O - T) % 26(14 - 19) % 26 = 21O
VT(C - T) % 26(2 - 19) % 26 = 9C
VC(T - C) % 26(19 - 2) % 26 = 17T
NN(A - N) % 26(0 - 13) % 26 = 13A
BT(I - T) % 26(8 - 19) % 26 = 15I
GT(N - T) % 26(13 - 19) % 26 = 20N
IC(G - C) % 26(6 - 2) % 26 = 4G
HN(U - N) % 26(20 - 13) % 26 = 7U
RT(Y - T) % 26(24 - 19) % 26 = 5Y
XT(E - T) % 26(4 - 19) % 26 = 11E
PC(N - C) % 26(13 - 2) % 26 = 11N
IN(V - N) % 26(21 - 13) % 26 = 8V
TT(A - T) % 26(0 - 19) % 26 = 7A
FT(M - T) % 26(12 - 19) % 26 = 19M
QC(O - C) % 26(14 - 2) % 26 = 12O
VN(I - N) % 26(8 - 13) % 26 = 21I
MT(T - T) % 26(19 - 19) % 26 = 0T
KT(R - T) % 26(17 - 19) % 26 = 24R
WC(U - C) % 26(20 - 2) % 26 = 18U
BN(O - N) % 26(14 - 13) % 26 = 1O
GT(N - T) % 26(13 - 19) % 26 = 20N
ZT(G - T) % 26(6 - 19) % 26 = 13G

Bài 2: Vigenere Cipher

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ỳ