①将明码中每个字符的 ASCII 码转为八位二进制,依次连接
②位置加密:每 4 位一组进行移位,第 1 组左移一位,并将原第一位数码移至最后(如 0110 转化为1100),第 2 组右移一位,并将原最后一位数码移至头部(如 0001 转化为 1000),第 3 组左移...以此类推,实现位置加密,并将每组移动后的结果转换成十进制,按顺序连接
③值加密:随机产生一个密钥 key,在符号列表['+','*','//','%']中取出对应运算符号,将②中的十进制结果分别与密钥 key 进行运算,顺次连接求得该字符的密文,(如 key 为 3,取得运算符'%',则字符'a'的高位密文为 12%3=0,低位密文为 8%3=2,顺次连接后得'a'的密文为'02' ④将每个字符的密文顺序连接,得到最终字符串密文。
用 Python 编写的程序运行结果如图 15 所示,请回答下列问题:
图 15
(1)当 key=3 时,输入要加密的明文:"aA" 则输出的密文为:(2)请在划线处,填入适当的语句或语句表达式
import random
def jzzh(x):
s=''
for i in range(8):
r=x%2
s=
x=x//2
return s
def jisuan(x): # 进 行 key 运 算
m=0
if fh[key]=='+':
m=x+key
elif fh[key]=='*':
m=x*key
elif fh[key]=='//':
m=x//key
elif fh[key]=='%':
m=x%key
return m
def yidong(x):
jg=''
n=len(x)//4
for i in range(n):
if i%2==0:
f=
else:
f=x[i*4+3]+x[i*4:i*4+3]
s=0
for j in f: #将 4 位二进制转成十进制
s=s*2+int(j)
jg+=
return jg
mingw=input('请输入要加密的明文:')fh=['+','*','//','%']
miw='' global key
key=random.randint(0,3)
for a in mingw:
a=ord(a)
L=jzzh(a)
miw+=L
jieguo=yidong(miw)print("产生的随机密钥为:",key,"\n 密文为:",jieguo)
相似题推荐
(1)Python程序如下,请在划线处填入合适的代码。
def scan(now,d):#scan函数的功能:从当前楼层开始,按当前运行方向扫描一趟
i=0
while i<=len(ask)-1:
if ask[i][2]==d and
stop[ask[i][0]]=1
stop[ask[i][1]]=1
ask.pop(i)#删除索引为i的列表元素
i=i+1
ask=[[7,16,0],[2,9,0],[6,1,0]]direct={1:"向上",-1:"向下"}
now=3
d=1
print("当前楼层:",now,"方向:",direct[d])
for i in range(len(ask)):
t=
t=t//abs(t)
ask[i][2]=t #t表示该请求的电梯运行方向while len(ask)>0:
stop=[0]*21#标记1-20各楼层是否停靠
scan(now,d)
print("\n",direct[d],",停靠楼层:",end="")
if d==1:
st=1;ed=21;now_next=20
else:
st=20;ed=0;now_next=1
for i in range(st,ed,d):
if stop[i]==1:
print(i,end="")
now=now_next
图a (选课界面)
图b (登陆成功后的欢迎模板)
图c (登录账号密码数据表 users)
图d (选课表字段结构)
具体实现程序代码如下:
from flask import Flask, render_template, request
import sqlite3
app = Flask(__name__)
#主页面路由命令及对应的视图函数, 代码略
@app.route("/login",methods=["POST"])
def login():
#登陆页面路由命令conn = sqlite3.connect("data/data.db")cur = conn.cursor()
cur.execute("SELECT * FROM users") # 数据表 users 如图 c 所示
infolist = cur.fetchall()
user = {}
userlist = []
for line in infolist:
userlist.append(line[1:3])
for i in range(0,len(userlist)):
cur.close()
conn.close()
username = request.form.get("username")
password = request.form.get("password")
if username in user and user[username] == password:
return render_template("welcome.html",
@app.route
def xk():
if request.method == "GET":
return render_template("xk.html",text="请填报你喜欢的社团") else:
xm = request.form.get("xm")
bj =
kc = request.form.get("kc")
conn = sqlite3.connect("data/data.db")
cur = conn.cursor()
cur.execute("create table if not exists 选课表(班级 integer, 姓名 text,课程 名称 text)")
cur.execute("insert into 选 课 表 ( 班 级 , 姓 名 , 课 程 名 称 ) values(%d,'%s','%s')" %(bj,xm,kc ))
cur.close(); conn.close()
return render_template("login.html", text="恭喜你, 选课成功!") if __name__ == "__main__":
(1) 结合相关截图,请在划线处填入合适的代码。
(2)(多选)根据图a所示, 程序中加框语句应修改为
A.app.run(host="0.0.0.0",port=8080)
B.app.run(host="192.168.10.106",port=8080)
C.app.run("192.168.10.106", 8080)
D.app.run(host="127.0.0.1",port=808