⑴ 仿射密码的加密举例
设密钥K= (7, 3), 用仿射密码加密明文hot。
三个字母对应的数值是7、14和19。分别加密如下:
(7×7 + 3) mod 26 = 52 mod 26 =0
(7×14 + 3) mod 26 = 101 mod 26 =23
(7×19 + 3) mod 26 =136 mod 26 =6
三个密文数值为0、23和6,对应的密文是AXG。
⑵ 为什么说加法密码、乘法密码、仿射密码、置换密码、Hill密码以及Vigenere密码
加法密码就是真典密码学中的恺撒密码格式是:密文=(明文+密钥)mod26,剩法密码是恺撒密码发展出来,格式是:密文=明文x实钥mon26;置换密码就是在简单的纵行换位密码中,明文以固定的宽度水平的写在一张图表纸上,密文按垂直方向读出,解密就是密文按相同的宽度垂直的写在图表纸上,然后水平的读出明文。希尔密码(Hill Cipher)是运用基本矩阵论原理的替换密码,由Lester S. Hill在1929年发明。每个字母当作26进制数字:A=0, B=1, C=2... 一串字母当成n维向量,跟一个n×n的矩阵相乘,再将得出的结果MOD26;Vigenere是恺撒密码演变而来。使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式。
有兴趣可以了解一下古典密码学,这里面都有。
⑶ 用仿射密码解谜下列密文
码和乘法密码联合起来,就得到了所谓的仿射密码(affine cipher)—— 两种密码与一对密钥的组合。乘法密码使用第一个密钥,加法密码使用第二个密钥。如图3-11所示,仿射密码其实就是被先后使用的两种密码。我们本来可以提出一种有关加密和解密的复杂运算,如C = (P ′ k1 + k2) mod 26和P = ((C - k2) ′ k1-1) mod 26。然而,我们用临时结果(T)表示两种单独的运算,以表明无论什么时候使用密码组合,均需确保在行的另一端要有一个逆,该逆在加密和解密过程中使用的顺序是相反的。如果加法是加密过程中的最终运算,那么减法就是解密过程中的初始运算。
在仿射密码中,明文P和密文C的关系是
图3-11 仿射密码
例3.9
⑷ 仿射密码的解密举例
本例是按照上例来解密的,也就是用仿射密码解密密文AXG,密钥k=(7,3)。
三个字母对应的数值是0、23、6。解密如下:
由解密Dk(c)=k3(c- k2) mod n(其中(k3 ×k1)mod26 = 1);
可知k3×7=1(mod 26)(其实,就是1/mod26),也就是存在整数t,使7×k3+26t=1。(1)
利用辗转相除法求解k3:
26 = 7 * 3 + 5;(2)(对26作形如:a * b + c,其中 c 就是余数)
7 = 5 * 1 + 2;(3)(作形如: a = c * m + n ,其中 a ,c 是上一步的, m 是乘数 ,n 是余数)
5 = 2 * 2 + 1;(一直循环上一步,直到余数 n = 1)
进行回代:
1 = 5 - 2 * 2
= 5 - (7 - 5 * 1) * 2(第一个2用(3)式来代替,也就是2 = 7 - 5 * 1)
= 3 * 5 - 2 * 7
= 3 * (26 - 7 * 3) - 2 * 7(5用(2)式来代替,也就是5 = 26 - 7 * 3)
= -11 * 7 + 3 * 26(直到不用进行代替,也就是得到只有7和26的表达式)
对比(1)式可知:t = 3 ,k3 = -11;
所以:Dk(c)=k3(c- k2) mod n <=> Dk(c)=-11(c- 3) mod 26 .
对于第一位 A :
-11 ( 0 - 3 ) mod 26 = ( -11 * -3 )mod 26 = 7;
对于第二位 X :
-11 ( 23 - 3 ) mod 26 = ( -11 * 20 ) mod 26 = ( -220 ) mod 26 = ( 26 * -9 ) + 14 = 14;
( 用计算器求 (-220) mod 26 ,不同的计算器会有不同的结果,网络的计算器求得就是 14 ,直接网络搜索:(-220) mod 26 就可以了,不能直接在计算器上输入 -220mod26 ,那样会得出负数。其实,可以这样算,算出(-11)mod 26 =15,再计算 (15 * 20)mod26 = 14)
对于第三位 G :
-11 ( 6 - 3 ) mod 26 = ( -11 * 3 )mod 26 = ( -33 )mod 26 = 19;(计算方法如上)
三个明文值为 7,14,19,对应的明文是HOT,也就是hot。
⑸ NJUPT《 现代密码学 》
(有些计算错误懒得改了,方法都是对的)
2) Caesar 密码 :26个英文字母与整数0~25对应,Caesar 密码密钥数量过少。
将Caesar 密码一般化,取任意的整数k作为密钥:
加密变换:c = E(k,p) = (p+k)(mod26)
解密变换:p = D(k,c) = (c-k)(mod26)
一般单表替代密码算法特点:
① 密钥空间K很大,|K| = 26!
② 移位密码是替换密码的一个特例,它仅含26个置换做为密钥空间。
③ 密钥n不便记忆,通常会采用密钥短语密码:选用英文短语或单词串作为密钥,去掉其中重复的字母,其它字母依次写于此字母串后,就可构造出一个字母替代表。
3) 仿射密码 :一种线性变换。仿射密码的明文空间和密文空间与移位密码相同,但密钥空间为 K = {(k1,k2)|k1,k2∈Z₂₆,gcd(k1,26) = 1};
对任意 m∈M,c∈C,k = (k1,k2)∈K,定义加密变换和解密变换为:
c = ek(m) = k1m+k2 (mod26)
m = dk(c) = k1^-1(c-k2) (mod26)
⑹ c=(3m+5)mod26怎么运算
下式是仿射密码的加密变换 c= (3m+5) mod 26
该密码的密钥空间是多少? 求出消息“hello”对应的密文 ?写出它的解密变换 ?试对密文进行解密 解:
1.密钥空间为 n n =312。
2.hello 五个字母对应的数字分别是 7,4,11,11,14
3.分别加密如下: (3*7+5)mod26=0 (3*4+5)mod26=17 (3*11+5)mod26=12 (3*11+5)mod26=12
(3*14+5)mod26=21
⑺ 仿射加密法的注意事项
注1. 仿射加密函数要求gcd(a,26)=1,即要求a和26互素,否则 就不是一个单射函数。
注2. 从仿射加密函数的表达式易知,当a=1,b=3时,这种仿射密码就是着名的凯撒密码。
注3. 在求解仿射解密函数时,需要求a在Z26上的乘法逆元a-1∈Z26,这可由扩展欧几里得算法求解,下表列出了在Z26上所有与26互素元素的乘法逆元:
1-13-15-17-19-111-115-117-119-121-123-125-11921153197231151725
⑻ 仿射密码 加密函数怎么转解密函数
仿射加密法与单码加密法没什么不同,因为明文的每个字母分别只映射到一个密文字母。仿射密码的加密算法就是一个线性变换。
⑼ 若已知某仿射密码加密明文字符为e、h的对应密文字符为f、w,试求仿射密码的密钥K
1、密钥是K=bp,设密钥k1,k2.f=(e+k1)mod26,w=(h+k2)mod26, e=4,f=5,h=7,w=22,代入后可以解。按字母顺序,a-z相当于0-25。
2、密钥为xr。计算公式f=(e*k1+k2)mod26,w=(e*k1+k2)mod,k1取值范围是0-25,且与26互质的数(即1,3,5,7,9...25,共13个,k2取值范围0-25。
⑽ 下面密文是用模26下的仿射密码加密的gzyyf,明文以he开头,试解密消息
hellk.仿射密码公式是:密文=明文剩于密钥1加密钥2然后和与26取余,即e(x)=(ax+b)mod26. 从提示he开头,代入即g=(ha+b)mon26,z=(ea+b)mod26,可求得a=11. b=7.,从而得出其它结果。注:公式中,a表示密钥1,且与26互质,即取值是1.3.5.7...23.25共13个,b是密钥2,取值范围是0-25.0-25对应英文字母a-z. 所以h=7,e=4,其它类推。还有,结果不应该是hello? 算出来是hellk.