算法说明: 设明文字母表为: ,密文字母表: ; 引入两个参数 、 ,要求 和 互素,即 ; 加密算法: ; 在解密时,首先需求解 在有限域 上的乘法逆元 ,可用欧几里得算法求解; 解密算法: . 具体要求: (1)取明文空间和密文空间为26个英文字母表,其大小为 ; (2)求出集合 中所有与26互素的数,并从中任取一个,作为 。另外,任取 ;输出 和 ; (3)求出 在有限域 上的乘法逆元 ; (4)从键盘输入一个字符串,长度约为15字符。然后按照a b c d e f g h i j k l m n o p q r s t u v w x y z分别对应0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25的方式,将明文转换为数字序列(不区分大小写,并忽略空格); (5)对第(4)步得到的数字序列逐数字加密,得到密文数字序列; (6)按照第(4)步中的映射方式,将第(5)步得到的数字序列映射为字母序列(即密文),并输出密文; (7)按照第(4)步中的映射方式,将第(6)步得到的密文序列映射为数字序列; (8)按照解密算法,对第(7)步得到的数字序列逐数字解密,得到明文数字序列; (9)按照第(4)步中的映射方式,将第(8)步得到的数字序列映射为字母序列(即明文),并输出。
时间: 2024-01-18 19:03:23 浏览: 136
RSA.rar_rsa_rsa visual basic_site:www.pudn.com_加密_加密算法
这是一个基于模运算的加密算法,具体步骤如下:
1. 首先选取两个互素的整数 a 和 b,这里取a=3, b=5。
2. 明文字母表和密文字母表都是26个英文字母。
3. 求出所有与26互素的数,它们是1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25。在这些数中任取一个作为a的逆元,这里取a的逆元为9。另外,任取b=5。
4. 输入一个长度约为15字符的字符串,将明文转换为数字序列,即用0~25表示a~z,不区分大小写,并忽略空格。
5. 对数字序列逐数字加密,即用密文数字 ci = (ai * a + b) % 26 替换明文数字 ai。
6. 将加密后的数字序列映射为字母序列,即用0~25表示a~z,得到密文。
7. 将密文序列映射为数字序列,即用a~z表示0~25。
8. 对数字序列逐数字解密,即用明文数字 ai = ((ci - b) * a^{-1}) % 26 替换密文数字 ci。
9. 将解密后的数字序列映射为字母序列,即用a~z表示0~25,得到明文。
注意,这种加密算法的安全性较低,易受到密码分析的攻击,不适用于需要高度保密性的场合。
阅读全文