zoukankan      html  css  js  c++  java
  • 课程设计小组报告

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

    选题要求我们利用 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

  • 相关阅读:
    zoj 2316 Matrix Multiplication 解题报告
    BestCoder7 1001 Little Pony and Permutation(hdu 4985) 解题报告
    codeforces 463C. Gargari and Bishops 解题报告
    codeforces 463B Caisa and Pylons 解题报告
    codeforces 463A Caisa and Sugar 解题报告
    CSS3新的字体尺寸单位rem
    CSS中文字体对照表
    引用外部CSS的link和import方式的分析与比较
    CSS样式表引用方式
    10个CSS简写/优化技巧
  • 原文地址:https://www.cnblogs.com/20175211lyz/p/12827946.html
Copyright © 2011-2022 走看看