文章目录
希尔密码
矩阵
矩阵基本概念
-
在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,最早来自于方程组的系数及常数所构成的方阵。这一概念由19世纪英国数学家凯利首先提出。
-
由 m × n 个数 a i j a_{ij} aij排成的m行n列的数表称为m行n列的矩阵,简称m × n矩阵。
A = [ A 11 A 12 . . . A 1 n A 21 A 22 . . . A 2 n . . . . . . . . . . . . A m 1 A m 2 . . . A m n ] A=\begin{bmatrix} A_{11} & A_{12}&...&A_{1n} \\A_{21} & A_{22}&...&A_{2n} \\...& ...& ...& ... \\ A_{m1} & A_{m2}&...&A_{mn} \end{bmatrix} A= A11A21...Am1A12A22...Am2............A1nA2n...Amn -
m×n 个数称为矩阵A的元素,简称为元。
-
数 a i j a_{ij} aij位于矩阵A的第i行第j列,称为矩阵A的 ( i , j ) (i,j) (i,j)元
-
m×n矩阵A也记作 A m n A_{mn} Amn。
-
元素是实数的矩阵称为实矩阵,元素是复数的矩阵称为复矩阵。
-
行数与列数都等于n的矩阵称为n阶矩阵或n阶方阵。
-
特征值与特征向量:
n×n的方块矩阵A的一个特征值和对应特征向量是满足 A v = λ v Av=\lambda v Av=λv的标量以及非零向量。其中 v v v为特征向量, λ \lambda λ为特征值。
线性变换的特征向量是指在变换下方向不变,或者简单地乘以一个缩放因子的非零向量。
特征向量对应的特征值是它所乘的那个缩放因子。
行列式基本概念
一个n×n的正方矩阵A的行列式记为 d e t ( A ) det(A) det(A)或 ∣ A ∣ |A| ∣A∣,行列式的值仅仅是一个数,不是矩阵之类的。
-
2×2矩阵的行列式计算方式如下:
d e t ( a b c d ) = a d − c b det\begin{pmatrix} a & b \\ c & d \end{pmatrix}=ad-cb det(acbd)=ad−cb -
元素 a i j a_{ij} aij的代数余子式
(1)在n阶行列式中,把元素 a i j a_{ij} aij所在的第i行和第j列划去后,留下来的n-1阶行列式叫做元素 a i j a_{ij} aij的余子式,记作 M i j M_{ij} Mij。
(2)将余子式 M i j M_{ij} Mij再乘以-1的i+j次幂记为 A i j 。 A_{ij}。 Aij。即: A i j = ( − 1 ) i + j M i j A_{ij}=(-1)^{i+j}M_{ij} Aij=(−1)i+jMij
(3) A i j A_{ij} Aij叫做元素 a i j a_{ij} aij的代数余子式。
(4)一个元素 a i j a_{ij} aij的代数余子式与该元素本身没什么关系,只与该元素的位置有关。 -
计算行列式值
n×n矩阵的行列式计算方式如下:
其任意行(或列)的元素与对应的代数余子式乘积之和
A = [ A 11 A 12 . . . A 1 n A 21 A 22 . . . A 2 n . . . . . . . . . . . . A n 1 A n 2 . . . A n n ] d e t ( A ) = ∣ A ∣ = a i 1 A i 1 + . . . + a i n A i n = ∑ j = 1 n a i j d e t ( A i j ) 即:行列式等于它的任一行 ( 列 ) 的所有元素与其对应的代数余子式的乘积之和 A=\begin{bmatrix} A_{11} & A_{12}&...&A_{1n} \\A_{21} & A_{22}&...&A_{2n} \\...& ...& ...& ... \\ A_{n1} & A_{n2}&...&A_{nn} \end{bmatrix} \\ \\det(A)=|A|=a_{i1}A_{i1}+...+a_{in}A_{in}=\sum_ {j=1}^{n}a_{ij}det(A_{ij}) \\即:行列式等于它的任一行(列)的所有元素与其对应的代数余子式的乘积之和 A= A11A21...An1A12A22...An2............A1nA2n...Ann det(A)=∣A∣=ai1Ai1+...+ainAin=j=1∑naijdet(Aij)即:行列式等于它的任一行(列)的所有元素与其对应的代数余子式的乘积之和 -
两个性质
d e t ( I m ) = 1 d e t ( A B ) = d e t ( A ) d e t ( B ) det(I_m)=1 \\det(AB)=det(A)det(B) det(Im)=1det(AB)=det(A)det(B)
特殊矩阵关于乘法运算构成群
1、
A
l
m
A_{lm}
Alm
B
m
n
=
C
l
n
B_{mn}=C_{ln}
Bmn=Cln
c
i
,
k
=
∑
j
=
1
m
a
i
,
j
b
j
,
k
,
1
≤
i
≤
l
,
1
≤
k
≤
n
c_{i,k}=\sum_{j=1}^ma_{i,j}b_{j,k},1 \le i \le l,1 \le k \le n
ci,k=∑j=1mai,jbj,k,1≤i≤l,1≤k≤n
2、
(
A
B
)
C
=
A
(
B
C
)
(AB)C=A(BC)
(AB)C=A(BC)
3、一般矩阵不满足交换律
A
B
≠
B
A
AB\not = BA
AB=BA。
4、矩阵有单位矩阵(对角线为1,其余为0)
I
m
=
[
1
0
.
.
.
0
0
1
.
.
.
0
.
.
.
.
.
.
.
.
.
.
.
.
0
0
.
.
.
1
]
I_m=\begin{bmatrix} 1&0&...&0 \\0 & 1&...&0 \\...& ...& ...& ... \\ 0& 0&...&1 \end{bmatrix}
Im=
10...001...0............00...1
其中,22矩阵
I
2
=
[
1
0
0
1
]
I_2=\begin{bmatrix} 1&0 \\ 0&1 \end{bmatrix}
I2=[1001]
A
I
m
=
A
,
I
m
B
=
B
AI_m=A,I_mB=B
AIm=A,ImB=B
5、如果A和B可逆
A
m
m
A
m
m
−
1
=
A
m
m
−
1
A
m
m
=
I
m
A_{mm}A_{mm}^{-1}=A_{mm}^{-1}A_{mm}=I_m
AmmAmm−1=Amm−1Amm=Im
注意:可逆矩阵关于乘法运算不一定符合交换律,不一定构成交换群。
A怎么才能可逆呢?
d
e
t
(
A
)
≠
0
det(A)\not =0
det(A)=0则A可逆。
G
L
n
(
R
)
=
{
A
∈
M
n
(
R
)
∣
d
e
t
(
A
)
≠
0
}
GL_n(R)=\{A \in M_n(R)|det(A)\not =0\}
GLn(R)={A∈Mn(R)∣det(A)=0},即所有n阶可逆实矩阵
G
L
n
(
R
)
GL_n(R)
GLn(R)关于矩阵乘法构成群。
6、伴随矩阵
A
∗
A^*
A∗
A各元素代数余子式
A
j
i
A_{ji}
Aji组成伴随矩阵
A
∗
=
(
A
i
j
)
A^*=(A_{ij})
A∗=(Aij)
特别注意:i和j的顺序不一样,代数余子式
A
j
i
A_{ji}
Aji在伴随矩阵中按列排列。
-
伴随矩阵 A ∗ A^* A∗的一些基本性质
(1)A可逆当且仅当 A ∗ A^* A∗可逆。
(2)如果A可逆, A ∗ = ∣ A ∣ A − 1 A^*=|A|A^{-1} A∗=∣A∣A−1
= > ∣ A ∣ − 1 A ∗ = A − 1 =>|A|^{-1}A^*=A^{-1} =>∣A∣−1A∗=A−1 -
R的逆元
在R(实数)乘法群中
1 为单位元。 设 a ∈ R , a ∗ 1 a = 1 = > 则 a 逆元 a − 1 为 1 a 1为单位元。 \\设a \in R ,a*\frac 1 a=1\\=>则a逆元a^{-1}为\frac 1 a 1为单位元。设a∈R,a∗a1=1=>则a逆元a−1为a1
因此, ∣ A ∣ − 1 = 1 ∣ A ∣ = > A − 1 = A ∗ 1 ∣ A ∣ |A|^{-1}=\frac 1 {|A|}\\=>A^{-1}=A^* \frac 1 {|A|} ∣A∣−1=∣A∣1=>A−1=A∗∣A∣1 -
二阶方阵可用下面方法求逆:
A i j 为 d e t ( A ) ( 也可写成 ∣ A ∣ ) 中,元素 a i j 的代数余子式。 当矩阵的阶数等于一阶时,伴随矩阵为一阶单位方阵。 二阶矩阵的伴随矩阵 A ∗ 求法口诀:主对角线元素互换,副对角线元素变号 伴随矩阵 A ∗ = [ a 22 − a 12 − a 21 a 11 ] A − 1 = 1 ∣ A ∣ A ∗ A_{ij}为det(A)(也可写成|A|)中,元素a_{ij}的代数余子式。 \\当矩阵的阶数等于一阶时,伴随矩阵为一阶单位方阵。 \\二阶矩阵的伴随矩阵A^*求法口诀:主对角线元素互换,副对角线元素变号 \\伴随矩阵A^*=\begin{bmatrix} a_{22}&- a_{12} \\-a_{21}& a_{11} \end{bmatrix} \\A^{-1}=\frac 1 {|A|}A^* Aij为det(A)(也可写成∣A∣)中,元素aij的代数余子式。当矩阵的阶数等于一阶时,伴随矩阵为一阶单位方阵。二阶矩阵的伴随矩阵A∗求法口诀:主对角线元素互换,副对角线元素变号伴随矩阵A∗=[a22−a21−a12a11]A−1=∣A∣1A∗ -
高阶矩阵可以用矩阵的初等行变换。
在线性代数中,矩阵的初等行变换是指以下三种变换类型 :
( 1 ) 交换矩阵的两行(对调 i , j ,两行记为 r i , r j ); ( 2 ) 以一个非零数 k 乘矩阵的某一行所有元素(第 i 行乘以 k 记为 r i × k ); ( 3 ) 把矩阵的某一行所有元素乘以一个数 k 后加到另一行对应的元素 ( 第 j 行乘以 k 加到第 i 行记为 r i + k ∗ r j ) 。 (1) 交换矩阵的两行(对调i,j,两行记为r_i,r_j); \\(2) 以一个非零数k乘矩阵的某一行所有元素(第i行乘以k记为r_i×k); \\(3) 把矩阵的某一行所有元素乘以一个数k后加到另一行对应的元素(第j行乘以k加到第i行记为r_i+k*r_j)。 (1)交换矩阵的两行(对调i,j,两行记为ri,rj);(2)以一个非零数k乘矩阵的某一行所有元素(第i行乘以k记为ri×k);(3)把矩阵的某一行所有元素乘以一个数k后加到另一行对应的元素(第j行乘以k加到第i行记为ri+k∗rj)。
加解密原理
密钥
- 设m为正整数,P和C分别是原文和密文。
P = C = ( Z 26 ) m P=C=(Z_{26})^m P=C=(Z26)m
这里的m为m维向量空间,m维欧氏空间的意思
26即26个英文字母,也可以为 ( Z 256 ) m (Z_{256})^m (Z256)m(一个字节256个数字) - 设m为2,即:每次对2个数字(即:2个英文字母或2个字节)进行加解密。
明文: x = ( x 1 , x 2 ) x=(x_1,x_2) x=(x1,x2),密文 y = ( y 1 , y 2 ) y=(y_1,y_2) y=(y1,y2)
密钥 : K = [ K 11 K 12 K 21 K 22 ] 密钥:K=\begin{bmatrix} K_{11}& K_{12} \\ K_{21}& K_{22} \end{bmatrix} 密钥:K=[K11K21K12K22]
特别注意:在 Z 26 Z_{26} Z26或 Z 256 Z_{256} Z256下进行运算。
加密函数
y
1
=
(
x
1
,
x
2
)
[
k
11
k
12
k
21
k
22
]
m
o
d
26
(
或
256
)
y_1=(x_1,x_2) \begin{bmatrix} k_{11}& k_{12} \\ k_{21}& k_{22} \end{bmatrix}\quad mod\quad 26(或256)
y1=(x1,x2)[k11k21k12k22]mod26(或256)
特别注意上面函数是在
Z
26
或
Z
256
下进行
Z_{26}或Z_{256}下进行
Z26或Z256下进行
即:
y
1
=
(
k
11
x
1
+
k
21
x
2
)
m
o
d
26
(
或
256
)
y
2
=
(
k
21
x
1
+
k
22
x
2
)
m
o
d
26
(
或
256
)
y_1=(k_{11}x_1+k_{21}x_2)\quad mod \quad 26(或256) \\y_2=(k_{21}x_1+k_{22}x_2) \quad mod \quad 26(或256)
y1=(k11x1+k21x2)mod26(或256)y2=(k21x1+k22x2)mod26(或256)
解密函数
y
=
x
K
=
>
y
K
−
1
=
(
x
K
)
K
−
1
=
x
(
K
K
−
1
)
=
x
I
m
=
x
y=xK\\=>yK^{-1}=(xK)K^{-1}=x(KK^{-1})=xI_m=x
y=xK=>yK−1=(xK)K−1=x(KK−1)=xIm=x
=
>
x
=
y
K
−
1
=>x=yK^{-1}
=>x=yK−1
特别注意上面函数是在
Z
26
或
Z
256
下进行
Z_{26}或Z_{256}下进行
Z26或Z256下进行
Z 26 上的运算( Z 256 与此类似) Z_{26}上的运算(Z_{256}与此类似) Z26上的运算(Z256与此类似)
-
∣ K ∣ − 1 = ? |K|^{-1}=? ∣K∣−1=?
这是错的: K − 1 = 1 ∣ K ∣ K ∗ ,这不是在 R 乘法群,是在 Z 26 乘法群。 K − 1 = ∣ K ∣ − 1 K ∗ ∣ K ∣ − 1 = ? 这是错的:K^{-1}=\frac 1 {|K|}K^*,这不是在R乘法群,是在Z_{26}乘法群。 \\K^{-1}=|K|^{-1}K^* \\|K|^{-1}=? 这是错的:K−1=∣K∣1K∗,这不是在R乘法群,是在Z26乘法群。K−1=∣K∣−1K∗∣K∣−1=? -
∣ K ∣ = ? |K| =? ∣K∣=?
∣ K ∣ = ∑ j = 1 n a i j ( − 1 ) i + j d e t ( A i j ) ,这也是错误的!! 这才是对的: ∣ K ∣ = ∑ j = 1 n a i j ( − 1 ) i + j d e t ( A i j ) m o d 26 思考一下为什么? \\|K| =\sum_ {j=1}^{n}a_{ij}(-1)^{i+j}det(A_{ij}) ,这也是错误的!! \\这才是对的:|K| =\sum_ {j=1}^{n}a_{ij}(-1)^{i+j}det(A_{ij}) \quad mod \quad 26 \\ 思考一下为什么? ∣K∣=j=1∑naij(−1)i+jdet(Aij),这也是错误的!!这才是对的:∣K∣=j=1∑naij(−1)i+jdet(Aij)mod26思考一下为什么? -
K ∗ = ? K^*=? K∗=?
K i j = ( − 1 ) i + j M i j K_{ij}=(-1)^{i+j}M_{ij} Kij=(−1)i+jMij这也错了!?
是的,错了!这只是在R乘法群的运算! -
∣ K ∣ ≠ 0 = > K 可逆 |K|\not = 0=>K可逆 ∣K∣=0=>K可逆
这也是错误的,在 Z 26 Z_{26} Z26中要变换如下:
g c d ( ∣ K ∣ , 26 ) = 1 = > K 在 Z 26 可逆 gcd(|K|,26)=1=>K在Z_{26}可逆 gcd(∣K∣,26)=1=>K在Z26可逆
例1
1 、取 K = [ K 11 K 12 K 21 K 22 ] = [ 19 17 2 9 ] ∣ K ∣ = ( 19 ∗ 9 − 17 ∗ 2 ) m o d 26 = 137 m o d 26 = 7 = > g c d ( 7 , 26 ) = 1 = > K 在 Z 26 中可逆。 2 、 7 ∗ 15 ≡ 1 ( m o d 26 ) = > 7 − 1 = 15 = > ∣ K ∣ − 1 = 15 3 、 K − 1 = ∣ K ∣ − 1 A ∗ = ∣ K ∣ − 1 [ K 11 − K 12 − K 21 K 22 ] = 15 [ 9 − 17 − 2 19 ] = 15 [ 9 9 24 19 ] K − 1 = [ 135 135 360 285 ] = [ 5 5 22 25 ] 4 、设原文 x = ( 18 , 7 ) ( 1 ) 密文 y = e k ( x ) = x K = ( 18 , 7 ) [ 19 17 2 9 ] = [ 356 , 359 ] = [ 18 , 5 ] ( 2 ) 原文 x = d k ( y ) = y K − 1 = [ 18 , 5 ] [ 5 5 22 25 ] = [ 200 , 215 ] = [ 18 , 7 ] = x 1、取K=\begin{bmatrix} K_{11}& K_{12} \\K_{21}& K_{22} \end{bmatrix}=\begin{bmatrix} 19 & 17 \\ 2&9 \end{bmatrix} \\|K|=(19*9-17*2) \quad mod \quad 26 \\=137 \quad mod \quad 26 =7 \\=>gcd(7,26)=1 \\=>K在Z_{26}中可逆。 \\2、7*15\equiv 1(mod \quad 26)=>7^{-1}=15=>|K|^{-1}=15 \\3、K^{-1}=|K|^{-1}A^*=|K|^{-1}\begin{bmatrix} K_{11}&- K_{12} \\-K_{21}& K_{22} \end{bmatrix} =15\begin{bmatrix} 9& -17 \\-2& 19 \end{bmatrix} \\ =15\begin{bmatrix} 9& 9 \\24& 19 \end{bmatrix} \\ K^{-1}=\begin{bmatrix} 135& 135 \\360& 285 \end{bmatrix} =\begin{bmatrix} 5& 5 \\22& 25 \end{bmatrix} \\ 4、设原文x=(18,7) \\ (1)密文y=e_k(x)=xK=(18,7)\begin{bmatrix} 19 & 17 \\ 2&9 \end{bmatrix} \\=[356,359]=[18,5] \\(2)原文x=d_k(y)=yK^{-1}=[18,5]\begin{bmatrix} 5& 5 \\22& 25 \end{bmatrix} \\=[200,215] =[18, 7]=x 1、取K=[K11K21K12K22]=[192179]∣K∣=(19∗9−17∗2)mod26=137mod26=7=>gcd(7,26)=1=>K在Z26中可逆。2、7∗15≡1(mod26)=>7−1=15=>∣K∣−1=153、K−1=∣K∣−1A∗=∣K∣−1[K11−K21−K12K22]=15[9−2−1719]=15[924919]K−1=[135360135285]=[522525]4、设原文x=(18,7)(1)密文y=ek(x)=xK=(18,7)[192179]=[356,359]=[18,5](2)原文x=dk(y)=yK−1=[18,5][522525]=[200,215]=[18,7]=x
关于负数取余问题:
1、当被除数能被除数整除时,无论被除数和除数的正负,余数都是0。
2、对于负数除以正数或,编译器会先将分子(即被除数的绝对值)转换为正整数进行取余运算。
参考文献
1、矩阵,百度百科
2、代数余子式,百度百科
3、特征向量,百度百科
4、《密码学原理与实践(第三版)》
5、矩阵变换,百度百科
6、伴随矩阵,百度百科