仿射密码加密解密实现

本文介绍了加密和解密的基本原理,通过一个具体的例子展示了如何将字母转换为数学计算,使用26个字母作为编码系统进行加密。加密函数为(3x+4)mod26,而解密则涉及到乘法逆元的概念。通过给出的代码示例,阐述了如何将加密和解密函数转化为实际的代码实现。文章还提供了相关资源链接以便深入学习。
摘要由CSDN通过智能技术生成

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

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

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

是有难度

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

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

 

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值