1、已知背包密码系统中的私钥分别为超递增序列 A=(3、4、9、17、 35),模数 p=73 和乘数 t=19,试对 good job 进行加密(利用字母对 应的 ASCII 码值的二进制进行加密)。
时间: 2023-06-27 15:01:49 浏览: 180
一种基于多背包的密码算法
首先,将 "good job" 转换为 ASCII 码值的二进制表示:
g: 01100111
o: 01101111
o: 01101111
d: 01100100
(空格): 00100000
j: 01101010
o: 01101111
b: 01100010
接下来,我们需要将每个二进制数加密成一个整数。使用背包密码系统中的公式:
c[i] = m[i] * t mod p
其中,c[i] 表示加密后的第 i 个字符,m[i] 表示原始信息中的第 i 个字符,t 和 p 在题目中已经给出。
我们将超递增序列 A 中的每个数都乘以 t,得到 B=(57、76、171、323、665),然后将其转换为二进制表示:
57: 00111001
76: 01001100
171: 10101011
323: 0100000011
665: 1010011001
接下来,我们将要加密的每个二进制数与 B 中的数对应相加,如果某一位上的值为 1,则加上对应的 B 中的数,否则不加。例如,对于第一个字符 g,我们需要加密的二进制数为 01100111,对应的 B 中的数为 57、76 和 171。在第 1、3、4 位上的值为 1,因此我们将这三个数相加得到 57 + 171 + 76 = 304,即 c[1] = 304。依此类推,我们可以得到加密后的结果:
g: 304
o: 607
o: 607
d: 380
(空格): 0
j: 646
o: 607
b: 342
因此,"good job" 加密后的结果为:
304 607 607 380 0 646 607 342
阅读全文