-
仿射 Caesar 密码的密钥[a,b]共有 311 种合法取值
==12×26−1种,需要去除a=1,b=0的平凡解==
-
【证明题】对于乘法代替密码,当且仅当gcd(k,p)=1时,Ek才是一一映射。
1)==(必要性)⇒==
若gcd(k,p)=1,下证Ek为一一映射:
单射:对任意i,j,k∈Zp,i=j都有jk≡ik (modp)否则由消去律有x1=x2,与x1,x2的选取不符,故Ek为单射;
满射:对任意y∈Zp,由加密公式有y≡kx (modp),又gcd(k,p)=1所以k−1modp存在,因此存在x≡k−1y (modp)∈Zp,故Ek为满射。
综上,Ek为一一映射。
2)==(充分性)⇐==
若Ek为一一映射,则Ek的逆映射Dk也为一一映射,对任意y∈Zp,由加密公式y≡kx (modp),必有k−1modp存在,即存在ku≡1 (modp),即存在u,v满足uk+vp=1,因此(k,p)=1
-
(1) basilisk to leviathan blake is contact
string="thesnowlaythickonthestepsandthesnowflakesdr ivenbythewinlookedblackintheheadlightsofthecars" list1=list(string) lists=list(set(list1)) lists.sort(key=list1.index) key="".join(lists)
C="SIDKHKDM AF HCRKIABIE SHIMC KD LFEAILA" for i in range(ord('a'), ord('z')+1): if chr(i) not in lists: key+=chr(i)
for i in range(len(C)): if(C[i]==' '): print(' ',end="") else: print(key[(ord(C[i].lower())-ord('a'))],end="")
|
助记词去重并将剩余字母顺序排列得到对照表key,然后替换即可
(2) 虽然单表代替密码有大于56位DES的密钥空间,但仍不安全,可以基于英文语言规律破译,统计密文中的词频,与英语中的字母频率对照,密文越长一般破译精确度越高。
(3) 尽量涵盖所有字母,使密钥中保持原来顺序的字符串较少。
-
(1) 分组:mu,st,se,ey,ou,ov,er,ca,do,ga,nw,es,tc,om,in,ga,to,nv,ex
密文:UZTBDLGZPNNWLGTGTUEROVLDBDUHFPERHWQSRZ
(2) 密文:UZTBDLGZPNNWLGTGTUEROVLDBDUHFPERHWQSRZ
L |
A |
R |
G |
E |
S |
T |
B |
C |
D |
F |
H |
I/J |
K |
M |
N |
O |
P |
Q |
U |
V |
W |
X |
Y |
Z |
(3) 两个矩阵加密得到的密文一样。通过观察发现可以第一个矩阵通过行列变化得到第二个矩阵。因为通过行列变化不影响Playfair规则下的替换,推广结论为若两个密钥生成的Playfair矩阵可以通过一定行列变化相互转换则其加密同一明文得到相同密文。
(4) 5x5矩阵共有25!种排列,其中每个元素有25个位置可以放,固定其余字母随其一起移动,即每个元素有25种等效矩阵,计算得:
2525!=24!=620,448,401,733,239,439,360,000≈279
-
(1) Hill密码加密: C=MKmod26
加密过程:将明文两两分组与数字对应如:me et对应 (13,5)(5,20) 计算:
(135)(9547)mod26=(14287)mod26=(129)=(LI)
(520)(9547)mod26=(145160)mod26=(154)=(OD)
类似计算可得最终密文为LIOD LI EN SYNK
(2) 求解:
det(9547)mod26=43
(9547)−1mod26=23(7−5−49)mod26=(5151225)
即 K−1=(5151225)
验证: (121594)(5151225)mod26=(135520)=(meet)
(3) 对于一个 m×m 的 Hill 密 码, 假如有 m 个明密文对, 每个长度都是 m, 定义 Pj= (p1jp1j⋯pmj) 和 Cj=(c1jc1j⋯cmj), 使得对每个 Cj 和 PjK(1⩽j⩽m) 都有 Cj=PjK, 其中 K 是末知的矩阵形密钥。现在定义两个 m×m 的矩阵 X=(pij)
和 Y=(cij) 。那么我们可以得出矩阵等式 Y=XK, 若 X 可逆, 则可得 K=
X−1Y 。若 X 不可逆, 那么可以另找 X 和对应的 Y, 直至得到一个可逆的 X 。简而言 之通过明密文矩阵容易算出密钥 K ,因为加密过程是线性的。
(4) 分别构建nxn的明密文矩阵,如果明文矩阵可逆,则可计算密钥矩阵
-
(1) 密文为:pbvwetlxozr
(2) 密文为:beokjdmsxzpmh
(3) 密钥为:zewdwptftvmie
-
(1) 7∗13∗13∗13∗13=142805
(2) 7∗13∗13∗13∗13=142805
(3) 13∗13∗13∗13=28561
(4) 10∗13∗13∗13∗13=285610
(5) 2∗26∗26∗2=2704
(6) 24∗(13∗13−1)∗13
(7) 13的倍数:37648
(8) 26的倍数:23530
(9) 264−285610−37648+23530=157248