仿射密码加密解密实现

加密和解密都是数学函数。对此并没有很多了解。只为一解答一道作业题目来了解这两个函数以及将函数转为代码。

先从百度基本了解一下这个加密函数

仿射密码加密解密实现

只靠通识的数学知识,理解

仿射密码加密解密实现

是有难度

首先是计算优先级的疑惑,通过查资料确认是先计算前面的加法运算,然后再模,所以从非专业人士来说以下的通式形式会更好理解。

仿射密码加密解密实现

这个式子对于代码来说应该是不难了,但是我要解的题目是类似这样的

仿射密码加密解密实现

 

那么怎么将字母作为可计算的值代入式子呢。参考这个文章

https://www.cnblogs.com/Mayfly-nymph/p/12394329 得知,以26个字母为编码系统为例,那么x代表的是字母在编码系统中的位序,

以 (3x+4)/mod 26为例,对 this字符进行加密的计算过程是这样

明文

t

h

i

s

x

19

7

8

18

3x+4

61

25

28

58

Mod 26

9

25

2

6

密文

j

z

c

g

了解这个之后,代码实现就很简单了,就是一个转换关系,如下

仿射密码加密解密实现

 

解密函数的形式是这样的:

仿射密码加密解密实现

????−1表示是 a 关于m的乘法逆元,关于这个概念可以参考这里https://blog.csdn.net/mochounv/article/details/109254137仿射密码加密解密实现

简单来说就是????−1amod26=1,就是一个最小与本身相乘再对26求模结果为1的数,因为a=3,所以这里很容易推算出 ????−1=9仿射密码加密解密实现

代码求是这样的:

仿射密码加密解密实现

所以得到这个系数之后 ,解密函数转成代码也就很简单了,如下:

仿射密码加密解密实现

所以文中提到的题目,

仿射密码加密解密实现

根据以上代码转换函数计算结果如下:

 

仿射密码加密解密实现

 

源码可以从这里下载:

https://download.csdn.net/download/mochounv/13033530