• 课程设计小组报告


    一、设计方案及可行性分析

    选题要求我们利用 openssl 实现一个类似 ASN1View 的软件。我们的设计方案如下

    • 用户通过 GUI 选择待解析的文件
    • 软件调用 openssl api 解码文件
    • 软件将解码结果可视化

    二、详细设计思路

    2.1 系统体系结构,技术选择

    采用 QT5 实现 GUI,调用 openssl 库中的 ASN1_parse_dump 函数解码文件,使用 QTTreeWidget 组件将解码结果可视化

    2.2 说明程序中用到的关键数据类型的定义,绘制关键程序的流程图,以及各子模块间的调用关系图

    • 关键数据类型的定义

      类型 描述
      BIO openssl 自定义的 IO 流
      ASN1Window 软件的主窗口类,通过其调用窗口组件
      QString QT 自定义的字符串类型
      QTreeWidget QT 定义的树形组件类
    • 关键程序的流程图

    • 各子模块间的调用关系图

    三、测试

    3.1 测试目的

    • 能否正确解码 ASN1 编码文件(目前仅限 der编码)
    • 能否处理执行过程中发生的异常

    3.2 测试流程

    测试一

    • 解码小组成员使用 pythonruby 生成的 der 文件

    • 测试结果

    • 结果分析

      左侧显示了 der 文件中各节点的类型信息,嵌套关系。点击任一个节点,右侧会显示其的数据类型,长度(不包括2字节的头部长度),具体数值。

    测试二

    • 尽管我们已经指定打开文件的后缀名只能是 *.der *.cer *.crt ,但这些文件很可能是 pem 编码。若解析错误,软件应该提示用户

    • 生成一个 pem 编码的证书,使用软件打开

    • 弹出报错,测试通过

    测试三

    • 解析 openssl 生成的 der 编码格式的证书

    • 生成 rsa_public_key.crt 证书,再使用 openssl x509 -outform der 命令将其转成 der 编码。使用软件打开

    • 测试结果

    • 命令行使用 openssl asn1parse 命令解析证书,对比发现,正确解码

    四、设计特色

    • 调用 openssl 原生 api,简洁高效

    五、源代码及注释

    见 https://gitee.com/imjoking/curriculum_design/tree/master/ASN1parser

  • 相关阅读:
    《Java技术》第七次作业
    《Java技术》第六次作业
    《Java技术》第五次作业
    《Java技术》第四次作业
    《Java技术》第三次作业
    《Java技术》第二次作业
    《Java技术》第一次作业
    股票——布林带
    股票——指数移动平均线
    股票——简单移动平均线
  • 原文地址:https://www.cnblogs.com/20175211lyz/p/12827946.html
Copyright © 2020-2023  润新知