浅谈仿射密码

今天我跟大家聊一聊我对仿射密码的理解。 
      仿射密码是加法移位密码和乘法移位密码的结合,其加密算法和解密算法是:
                E(x)=ax+b(mod m); 
                D(x)=a-1(x-b) mod m.
                其中a,m互质,即gcd(a,m)=1,a,b为仿射密码的密钥。m为字母个数,a-1是a在Zm群的乘法逆元(觉得乘法逆元对于仿射很重要)。然后,当x=0的时候,它就是一个加法移位密码,要是m是26的话,它就是个凯撒密码;要是b=0,它是个乘法移位密码。

在这里插入图片描述
接下来我们讲乘法逆元,求乘法逆元有两种方法,费马小定理和拓展欧几里得定理。(顺带吐槽,费马竟然是个业余数学家,,,业余的,,,)。
那么什么是费马小定理和拓展欧几里得定理呢?
费马小定理:假如m是质数,且gcd(a,m)=1(a和m互质),那么 a^(m-1) ≡ 1(mod m),即 (a^(m-1) )%m= 1。
在这里插入图片描述
这是一个例题,大家就凑合着理解费马小定理吧。
用其求解乘法逆元可将 a^(m-1) ≡ 1(mod m)化为a*a^(m-2)≡1(mod m),将x看成a^(m-2),
那么可求得a的乘法逆元x为a^(m-2)≡(mod m).
然后是拓展欧几里得定理,这个比费马小定理要难理解,它是用来在已知a, b求解一组x,y,,它可以在求得a,b最大公约数的同时,能找到整数x,y(其中一个很可能是负数),使它们满足贝祖等式: ax+by = gcd(a, b) =d。贝武等式,又名裴属定理,gcd(a,b)=gcd(b,a)=gcd(-a,b)=gcd(|a|,|b|),可有这几种形式。如何用拓展欧几里得算法求解乘法逆元呢?我个人觉得挺复杂的,这个博客讲得挺详细的:https://blog.csdn.net/stray_lambs/article/details/52133141
我的仿射密码有点水。另外,仿射密码代码网上自寻吧,没敲出来。大家要是想更详细的了解如何求解乘法逆元的话,可以去这篇博客看一下:https://blog.csdn.net/STcyclone/article/details/52081822
此图是我向人请教的,能看懂就是不太好解释。
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值