加密和解密都是数学函数。对此并没有很多了解。只为一解答一道作业题目来了解这两个函数以及将函数转为代码。
先从百度基本了解一下这个加密函数
只靠通识的数学知识,理解
是有难度
首先是计算优先级的疑惑,通过查资料确认是先计算前面的加法运算,然后再模,所以从非专业人士来说以下的通式形式会更好理解。
这个式子对于代码来说应该是不难了,但是我要解的题目是类似这样的
那么怎么将字母作为可计算的值代入式子呢。参考这个文章
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
代码求是这样的:
所以得到这个系数之后 ,解密函数转成代码也就很简单了,如下:
所以文中提到的题目,
根据以上代码转换函数计算结果如下:
源码可以从这里下载: