当前位置: 高中信息技术 / 综合题
  • 1. (2023高三下·浙江开学考) 某智能门禁系统的一个子系统功能是完成身份认证功能。智能终端通过用户刷卡或者指纹获取用户ID数据,加密后发送到Web服务器,通过对比数据库中的用户信息完成身份认证并留下登录记录。该子系统部分功能实现如下,请回答相关问题。

    图a

    1. (1) 该子系统架构图如图 a 所示,那么图中①处最合适的选项是(单选,填字母:A .交换机 / B .防火墙 / C .服务器)
    2. (2) 智能终端读取到用户ID后将加密后的ID和加密后密钥一起发送到服务器,部分程序如下,若密文是“486896762”,加密后密钥是“71”,那么系统发送数据的URL是

      from microbit import *

      import random, Obloq

      IP = "192.168.113.5"; PORT = "80"

      SSID = "freeWiFi"; PASSWORD = "103103103"

      # 上述参数设置 uart 串口并用Obloq 模块建立网络连接, 代码略

      Obloq.httpConfig(IP, PORT)

      while True:

      key = random.randint(3, 9)   # 随机产生密钥

      enkey = ord("A") ^ key       # 加密后的密钥,如71,^表示异或运算

      # 读取身份证号信息并使用密钥 key进行加密

      # 加密后身份证保存在字符串 idnum 中,如 486896762,代码略

      err, res = Obloq.get("login?u=" + idnum +"&k=" + str(enkey))

      if err == 200:

      print("用户信息发送成功! ")

      sleep(5 * 1000)

    3. (3) 为了保证数据在网络传输过程中的安全,小林设计了如下简单加密算法,如图b所示:

      图b

      ①用户ID由数字字符组成,如“820230106”,采用替代加密,若密钥是6,则用户ID的加密结果是“486896762”;

      ②由于密钥6也要在网络中传输,因此密钥也要加密,小林采用字符“A”的ASCII码进行简单异或加密,加密结果是65⊕6=71;

      ③接收端先对加密的密钥进行解密:71⊕65=6,然后用该密钥解密密文,结果是用户ID的明文“820230106”。

      以下服务端程序实现了解密与用户身份验证过程,请将该算法补充完整。

      from flask import Flask, render_template, request

      app = Flask(__name__)

      @app.route("/")

      def index():

          return render_template("home.html")

      @app.route(" " , methods=["GET"])

      def decode():

          usr = request.args.get("u")         # 接收到的用户 ID 密文, 数字字符串格式

          enkey = int(request.args.get("k")) # 接收到的已加密的密钥, 整数格式

          key = enkey ^ ord("A")              # 对加密过的密钥进行解密

          res = ""

          for i in range(len(usr)):

              num = (+ 10) % 10

              res = res + str(num)

         

      if __name__ == "__main__":

          app.run (host="0.0.0.0",port="80",debug=True)

    4. (4) 若系统数据库为“sys.db”,存储已授权用户信息的数据表为“users”,用户信息字段名为“userid”,则上述加框处查询用户信息的SQL语句是(   )(单选,填字母)
      A . "SELECT * FROM users WHERE userid = %s" % res B . "SELECT * FROM sys WHERE usr = %s" % userid C . "SELECT * FROM sys WHERE userid = 'urs'" D . "SELECT * FROM users WHERE userid = 'res'"

微信扫码预览、分享更方便