简单密码算法
置换
仿射
前面在求解同余方程唯一解时,用到了乘法逆元
a
−
1
a^{-1}
a−1,可是
Z
m
的乘法运算没有逆元
Z_m的乘法运算没有逆元
Zm的乘法运算没有逆元
因此,要引入剩余类的乘法逆元
U ( m ) U(m) U(m)关于剩余类的乘法构成群
同余方程
a
x
≡
b
(
m
o
d
m
)
ax≡b(mod\quad m)
ax≡b(modm)有唯一解
x
∈
Z
m
x∈Z_m
x∈Zm的充要条件是
g
c
d
(
a
,
m
)
=
1
gcd(a,m)=1
gcd(a,m)=1
定义
U
(
m
)
=
{
a
‾
∈
Z
m
∣
(
a
,
m
)
=
1
}
U
(
m
)
的阶
∣
U
(
m
)
∣
=
Φ
(
m
)
,即:所有与
m
互素的元素个数为
Φ
(
m
)
此处
Φ
(
m
)
为欧拉函数,即:
m
=
p
1
r
1
p
2
r
2
.
.
.
p
s
r
s
p
1
、
p
2
、
.
.
.
、
p
s
为
m
的不同素因子
,
即
:
m
>
1
的整数能唯一分解为素数幂乘积。
Φ
(
m
)
=
(
p
1
r
1
−
p
1
r
1
−
1
)
(
p
2
r
2
−
p
2
r
2
−
1
)
.
.
.
(
(
p
s
r
s
−
p
s
r
s
−
1
)
Φ
(
m
)
=
m
∏
i
=
1
s
(
a
−
1
p
i
)
定义U(m)=\{\overline a∈Z_m|(a,m)=1\} \\U(m)的阶|U(m)|=Φ(m),即:所有与m互素的元素个数为Φ(m) \\此处Φ(m)为欧拉函数,即: \\m=p_1^{r_1}p_2^{r_2}...p_s^{r_s} \\p_1、p_2、...、p_s为m的不同素因子,即:m>1的整数能唯一分解为素数幂乘积。 \\Φ(m)=(p_1^{r_1}-p_1^{r_1-1})(p_2^{r_2}-p_2^{r_2-1})...((p_s^{r_s}-p_s^{r_s-1}) \\Φ(m)=m\prod_{\substack i=1}^{s}(a-\dfrac 1 p_i)
定义U(m)={a∈Zm∣(a,m)=1}U(m)的阶∣U(m)∣=Φ(m),即:所有与m互素的元素个数为Φ(m)此处Φ(m)为欧拉函数,即:m=p1r1p2r2...psrsp1、p2、...、ps为m的不同素因子,即:m>1的整数能唯一分解为素数幂乘积。Φ(m)=(p1r1−p1r1−1)(p2r2−p2r2−1)...((psrs−psrs−1)Φ(m)=mi=1∏s(a−p1i)
现在来证明
U
(
m
)
U(m)
U(m)关于剩余类的乘法构成群
任意
a
‾
∈
U
(
m
)
,有
(
a
,
m
)
=
1
存在
u
,
v
属于
Z
,
使
a
u
+
m
v
=
1
(
u
,
m
)
=
1
,
则
u
‾
∈
U
(
m
)
,且
a
‾
⋅
u
‾
=
a
u
‾
=
a
u
+
m
v
‾
=
1
‾
u
‾
⋅
a
‾
=
u
a
‾
=
a
u
‾
=
1
‾
至此,
U
(
m
)
每个元素都有逆元,
U
(
m
)
关于剩余类的乘法构成群
群
(
U
(
m
)
,
⋅
)
称为
Z
的模
m
单位群,是交换群
特别的,
p
为素数,
U
(
p
)
记作
Z
p
∗
=
{
1
‾
,
2
‾
,
.
.
.
,
p
−
1
‾
}
任意\overline a ∈ U(m),有(a,m)=1 \\存在u,v属于Z,使 \\au+mv=1 \\(u,m)=1,则\overline u ∈U(m),且 \\ \overline a \cdot\overline u =\overline {au}=\overline{au+mv}=\overline 1 \\ \overline u \cdot \overline a = \overline {ua} = \overline {au} = \overline 1 \\至此,U(m)每个元素都有逆元,U(m)关于剩余类的乘法构成群 \\群(U(m),\cdot )称为Z的模m单位群,是交换群 \\特别的,p为素数,U(p)记作Z_p^*=\{\overline 1,\overline 2,...,\overline {p-1}\}
任意a∈U(m),有(a,m)=1存在u,v属于Z,使au+mv=1(u,m)=1,则u∈U(m),且a⋅u=au=au+mv=1u⋅a=ua=au=1至此,U(m)每个元素都有逆元,U(m)关于剩余类的乘法构成群群(U(m),⋅)称为Z的模m单位群,是交换群特别的,p为素数,U(p)记作Zp∗={1,2,...,p−1}
例
原文 : " a b c " 设 " a " = 0 , " b " = 1 , " c " = 2 , . . . . . , " z " = 26 设密钥 K = ( 11 , 2 ) , a = 11 , b = 2 , g c d ( 11 , 26 ) = 1 e k ( x ) = ( 11 x + 2 ) m o d 26 d k ( y ) = a − 1 ( y − b ) m o d 26 1 、求出 a − 1 和 d k ( y ) 因为 11 ∗ 19 m o d 26 = 1 所以 a − 1 = 1 1 − 1 = 19 d k ( y ) = 19 ( y − 2 ) m o d 26 2 、计算每个字母的加密与解密 ( 1 ) " a ” e k ( 0 ) = ( 11 ∗ 0 + 2 ) m o d 26 = 2 d k ( 2 ) = 19 ( 2 − 2 ) m o d 26 = 0 = > " a " ( 2 ) " b " e k ( 1 ) = ( 11 ∗ 1 + 2 ) m o d 26 = 13 d k ( 2 ) = 19 ( 13 − 2 ) m o d 26 = 1 = > " b " ( 3 ) " c " e k ( 1 ) = ( 11 ∗ 2 + 2 ) m o d 26 = 24 d k ( 2 ) = 19 ( 24 − 2 ) m o d 26 = 2 = > " c " 加密 " a b c " = ( 2 , 13 , 24 ) = “ c n y " 原文:"abc" \\设"a"=0,"b"=1,"c"=2,.....,"z"=26 \\设密钥K=(11,2),a=11,b=2,gcd(11,26)=1 \\e_k(x)=(11x+2)\quad mod \quad 26 \\d_k(y)=a^{-1}(y-b)\quad mod \quad 26 \\1、求出a^{-1}和d_k(y) \\因为11*19 \quad mod \quad 26 =1 \\所以a^{-1}=11^{-1}=19 \\d_k(y)=19(y-2) \quad mod \quad 26 \\2、计算每个字母的加密与解密 \\(1)"a” \\e_k(0)=(11*0+2)\quad mod \quad 26=2 \\d_k(2)=19(2-2) \quad mod \quad 26=0=>"a" \\(2)"b" \\e_k(1)=(11*1+2)\quad mod \quad 26=13 \\d_k(2)=19(13-2) \quad mod \quad 26=1=>"b" \\(3)"c" \\e_k(1)=(11*2+2)\quad mod \quad 26=24 \\d_k(2)=19(24-2) \quad mod \quad 26=2=>"c" \\加密"abc"=(2,13,24)=“cny" 原文:"abc"设"a"=0,"b"=1,"c"=2,.....,"z"=26设密钥K=(11,2),a=11,b=2,gcd(11,26)=1ek(x)=(11x+2)mod26dk(y)=a−1(y−b)mod261、求出a−1和dk(y)因为11∗19mod26=1所以a−1=11−1=19dk(y)=19(y−2)mod262、计算每个字母的加密与解密(1)"a”ek(0)=(11∗0+2)mod26=2dk(2)=19(2−2)mod26=0=>"a"(2)"b"ek(1)=(11∗1+2)mod26=13dk(2)=19(13−2)mod26=1=>"b"(3)"c"ek(1)=(11∗2+2)mod26=24dk(2)=19(24−2)mod26=2=>"c"加密"abc"=(2,13,24)=“cny"
参考文献
1、《近世代数》