抽象代数精解【7】

文章目录

简单密码算法

置换

仿射

前面在求解同余方程唯一解时,用到了乘法逆元 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、《近世代数》

相关推荐
柠檬少少开发8 分钟前
图像拼接算法及实现(一)
人工智能·算法·计算机视觉
weixin_486681141 小时前
C++系列-STL容器中统计算法count, count_if
开发语言·c++·算法
一道秘制的小菜1 小时前
C++第七节课 运算符重载
服务器·开发语言·c++·学习·算法
咕噜咕嘟嘟嘟2 小时前
343. 整数拆分
数据结构·算法
WenGyyyL3 小时前
力扣最热一百题——二叉树的直径
java·c++·算法·二叉树·深度优先
sdlkjaljafdg3 小时前
vector<bool>性能测试
开发语言·c++·算法
muyierfly3 小时前
36.贪心算法3
算法·贪心算法
Kenneth風车4 小时前
【机器学习(七)】分类和回归任务-K-近邻 (KNN)算法-Sentosa_DSML社区版
人工智能·算法·低代码·机器学习·分类·数据分析·回归
m0_631270406 小时前
标准C++(二)
开发语言·c++·算法
沫刃起6 小时前
Codeforces Round 972 (Div. 2) C. Lazy Narek
数据结构·c++·算法