学进去-教育应平等而普惠
试题
类型:操作题
难度系数:0.85
所属科目:高中信息技术
小明编写了一个字符加密程序,如图1所示,输入明文(可包含字母、数字和特殊字符"!@$%&~")和密钥(可包含字母和数字字符),按如下步骤加密:
1.计算密钥平均值k:
密钥中的英文字符,按字母表位序代表其数值。例:输入密钥Ab7得到的密钥平均值k为(1+2+7)//3=3;
2.根据k对明文加密:
①遇到英文字符,则按凯撒密码加密,后移k位,例:k=3,则"a"加密后为"d"。
②遇到数字字符,则将k和该数字异或,再把异或结果转为十进制并加"#"。例:k=3,对应的二进制为"11"; 明文字符"2",对应的二进制为"10";异或二进制结果为"01",对应的密文为"1#"。
(异或⊕运算:先把参与运算的数转换为二进制,再进行按位运算。可参考图2)
③其他字符保持不变。
④逆序输出,得到最终密文。
#主程序
ming=input("请输入明文:")
key=input("请输入密钥:")
k=ave(key)   #计算平均密钥值
mw=""
for i in ming:

if ''0 ''<=1<=9''.

mw=str(yh(i,k))+"#"+mw

elif"a"<=i<="z" or "A"<=i<="Z":

mw=ks(i,k)+mw

elifi in "!@$%&~":

mw=i+mw

else:

print("输入有误,请重新输入")

break

print("加密后密文:"+mw)

图1                                                       图2

(1)主程序用到了_____________(A.枚举算法/B.解析算法)
(2)计算平均密钥值
def ave(key):

s=0

for i in key:

if ''a''<=i<=''z'' or ''A'' <=i<="Z'':

s+=___________________

elif ''0''<=i<="9";

s+=int(i)

k=s//len(key)

return k

(3)进制相互转换
def DtB(x):#十进制转二进制

if x==0:

return "0"

s=""

while x>0:

r=x%2

   _____

x=x//2

return s

def BtD(s):#二进制转十进制

x=0

for i ins :

_____

return x

(4)数字进行异或加密
def yh(ming,key):

s1=DtB(int(ming))

s2=DtB(key)

if len(s1)<len(s2):

s1,s2=s2,s1

s2="0"*(len(s1)-len(s2))+s2          #在s2前补0使其与s1长度一致

res=""

for i in range(len(s1)):

res=___________

mw=BtD(res)

return mw

#英文字母进行凯撒加密ks(ming,key)代码省略
编辑解析赚收入
收藏
|
有奖纠错

同类型试题

优质答疑

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
我要答疑
编写解析
解析:

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

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