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

  • 相关阅读:
    ASP.NET MVC 常用内置验证特性 简介
    为什么要有get方法?-多态内存分析的应用
    多态的内存分析-转载
    抽象类和接口
    多态
    通过序列化复制整个对象
    检查异常和非检查异常
    怎样抛出自己定义的异常
    try catch和throws怎么用?-结合使用
    两个对象整体内容的比较-重写对象的equals方法
  • 原文地址:https://www.cnblogs.com/20175211lyz/p/12827946.html
Copyright © 2011-2022 走看看