求助:三个古典密码的VC++程序,密码算法已给
1.置换密码:例明文为:MING CHEN WU DIAN CHU FA (明晨五点出发)
密码加密过程为,将明文以每行5个字母,顺序排列成一个矩阵,最后一行不够用*表示,如例明文排成:
MINGC
HENWU
DIANC
HUFA*
将该矩阵按列输出,得到密文:MHDH IEIU NNAF GWNA CUC*
2. 代替密码
最著名的是凯撒密码,即将明文字母以按一定的位数k在字母表中的位置右移,如凯撒密码中取k=3,则对应的字母表为:
明文:(ABCDEFGHIJKLMNOPQRSTUVWXYZ)
密文:(DEFGHIJKLMNOPQRSTUVWXYZABC)
如,明文为 :MING CHEN WU DIAN CHU FA (明晨五点出发)
取k=3,
密文为 :PLQJ FKHQ ZX GLDQ FKX ID
3.代数密码
将明文和密钥的字母用二进制数表示出来(二进制为7位),如下表所示,字母所对应的二进制数为列标+行标,
如A对应1000001
100 101
0 0 0 0 P
0 0 0 1 A Q
0 0 1 0 B R
0 0 1 1 C S
0 1 0 0 D T
0 1 0 1 E U
0 1 1 0 F V
0 1 1 1 G W
1 0 0 0 H X
1 0 0 1 I Y
1 0 1 0 J Z
1 0 1 1 K
1 1 0 0 L
1 1 0 1 M
1 1 1 0 N
1 1 1 1 O
例:
明文为:DATA
二进制数为:1000100 1000001 1010100 1000001
密钥为:LAMB
二进制数为: 1001100 1000001 1001101 1000010
将明文和密文的二进制数模2加(相同为0,不同为1)
得到密文:0001000 0000000 0011001 0000011
以上为3个密码算法,求对应的VC++加密和解密程序。。。。
密文为