2x+7/13=20/13这个方程如何解?

自选一种编程语言,实现古典密码中多项式代换密码的加解密过程。由于多 项式代换密码可一般化移位密码、乘数密码、仿射密码,分别对多项式代换密码 参数进行设置,完成这三个特例的实现。

多项式代换密码加密方程为: f(l)=ktl

提交电子版实验报告(附程序代码,需添加代码注释)文件,报告能够完整 体现上述实验内容,并论述相关的实现步骤和实验结果(截图佐证)。

在古典密码学中,英文字符 a-z 依次排序为 0-25,即

0

例如:对于明文 asdzc 右移 3 位对应的密文应该为 dvgcf

在 c 语言中,由于对所有字母进行排序比较麻烦,因此我们可以利用英文字母的 ASCII 值进行计算。 即:英文字母的序号与 ASCII 值有如下关系:对于小写字母 序号=(ASCII 值%97),其中 97 为 a 的 ASCII 值,要通过字母序号得到相应字母的 ASCII 值只需要给序号加 97 即可(对于大写字母秩序将 97 换为 65 即可)

例如:字母 d 的序号为 3

例如:明文 d 右移 3 位对应的密文为 g

移位密码加密过程用 c 语言描述如下:其中指针 p 指向明文字符串,k 为右移位数

//其中 k 表示右移的位数,q=26 //移位加密算法中英文字符 a-z 依次标序为 0-25 英文字母的序号与 ASCII 值有如下关系:对于小写字母 序号=(ASCII 值%97), 其中 97 为 a 的 ASCII 值,要通过字母序号得到相应字母的 ASCII 值只需要给序号加 97 即 可(对于大写字母秩序将 97 换为 65 即可)

由于解密算法中 c-k 可能为负数,导致 ASCII 值出错,因此解密算法需要在模 26 前加 26.其他与加 密算法相同,只是将加好变为减号。

解密算法用 C 语言表示为:

由于解密算法中 c-k 可能为负数,导致 ASCII 值出错, 因此解密算法需要在模 26 前加 26.其他与加密算法相同,只是将加好变为减号。

25](即 k 的取值范围)

设明文消息为 M,消息元素为 m 元素下标为 i; 则密文消息为 C,密文元素为 c 元素下标为 j; 则加密算法为:c=i*k mod n; 其中:0<k<n;k 与 n 互素,即要满足 gcd(k, n)=1,否则不存在模逆元,不能正 确解密。

乘法密码加密算法用 C 语言表示为:

否则不存在模逆元,不能正确解密。因此,对于 26 个大写或小写

解密算法:D=j*X mod n,其中 j 为密文消息元素的下标,X 为 k(秘钥模逆 元)的逆元。

乘法密码解密算法用 C 语言表示:

//其中 j 为密文消息元素的下标 //X 为 k(秘钥模逆元)的逆元

仿射密码加密算法用 C 语言表示为:

法逆元仿射密码解密算法用 C 语言表示为:

//其中 k 表示右移的位数,q=26 //移位加密算法中英文字符 a-z 依次标序为 0-25 英文字母的序号与 ASCII 值有如下关系:对于小写字母 序号=(ASCII值%97), 其中 97 为 a 的 ASCII 值,要通过字母序号得到相应字母的 ASCII 值只需 要给序号加 97 即可(对于大写字母秩序将 97 换为 65 即可) 由于解密算法中 c-k 可能为负数,导致 ASCII 值出错, 因此解密算法需要在模 26 前加 26.其他与加密算法相同,只是将加好变为减号。 则不存在模逆元,不能正确解密。因此,对于 26 个大写或小写 25](即 k 的取值范围) //i 为明文消息元素的下标 //其中 j 为密文消息元素的下标 //X 为 k(秘钥模逆元)的逆元 int k;//移位密码中的右移位数


推荐于 · 为人师表的正直的大学教师


你对这个回答的评价是?

你对这个回答的评价是?


采纳数:0 获赞数:253


你好亲,久等了,很高兴为您解答。

你对这个回答的评价是?


· 贡献了超过160个回答

你对这个回答的评价是?

下载百度知道APP,抢鲜体验

使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。

我要回帖

更多关于 24+(-15)+7+(-20)的过程 的文章

 

随机推荐