学进去-教育应平等而普惠
试题
类型:操作题
难度系数:0.40
所属科目:高中信息技术
小李编写了一个对文本数据加密的程序,功能是输入明文和密钥,显示加密后的密文。加密算法设计如下:
第一步:将明文字符串中每个字符的8位二进制ASCI 码(不足8位的左端补足0)的左右各4位两段交换顺序,得到一个新的8位二进制数,如字符“A ”的二进制ASCII 码为01000001,处理后得到的新二进制数为00010100,再转换为十进制数20。经过该处理,明文字符串中的每个字符都转换为一个十进制整数。
第二步:利用密钥字符串的ASCⅡ 码依次对第一步得到的相应数值进行异或处理,可得到一个新的十进制数,例如20与密钥“a”的ASCⅡ 码异或得到117。密钥位数不够可循环使用,例如密钥为“ab3y”,循环使用如表所示。
明文(整数)20……… ·… ·… ·……… ·……… ·
密钥ab3yab3yab
密文(整数)117…………… ·………………… ·
第三步:将第二步得到的整数集依次用逗号连接,得到最终加密后的密文。
例如:明文字符串为“Ab12cxy”,密钥为“ab3y”,经过第一步处理得到的整数集为[20,38,19,35,54,135,151]; 再将该整数集依次与密钥进行异或处理,最后将处理结果用逗号连接,得到密文为117,68,32,90,87,229,164。
(1)若明文字符串为“a”,密钥为“a”,经过上述加密处理后的密文为__________
(2)定义如下encodex(str 1)函数,该函数的功能是实现 该加密算法的第一步。
def encodex(str_1):

n=len(str_1)

str_2=[0]*n

i=0

for i in range(n):

p=ord(str_1[i])

q=(p//16)+(p%16)*16


        str 2[i]=q
     return str_2
上面Python程序划线处实现一个字符的8位二进制 ASCⅡ 码(不足8位的左端补足0)左右各4位两段交换顺序,若将加密算法改成左2位右6位两段交换顺序,划线处代码应该修改为_________
(3)实现加密算法的剩余部分Python程序如下,请在划线处填入合适的代码。
def encodey(str_2,keys):
   q=[0]*1000
   head,tail=0,0
   for item in keys:
     ____
        tail+=1
   str_3=""
   for item in str_2:
       keyx=q[head]
   ____
        head+=1;tail+=1
        tmp=item^keyx     #^ 是异或运算
        str_3+=str(tmp)+","
   str_3=str_3.strip(",")     #去除字符串末尾的逗号
   return str _3
str_l=input("请输入准备加密的明文:")
keys=input("请输入密钥:")
str_2=encodex(str_1)
print("加密后的密文:", ____ )
编辑解析赚收入
收藏
|
有奖纠错

同类型试题

优质答疑

y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2

用户名称
2019-09-19

y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2

用户名称
2019-09-19
我要答疑
编写解析
解析:

奖学金将在审核通过后自动发放到帐

提交
我要答疑
我要答疑:
提交