zoukankan      html  css  js  c++  java
  • 个人报告

    一、贡献

    环境调试;相关文档整理;前端设计;调试完善代码,c转c++。
    个人码云学习项目https://gitee.com/hjl20191315/hhhhharper/tree/master/%E8%AF%BE%E8%AE%BE
    任务理解分工https://www.cnblogs.com/harperhjl/p/15771320.html
    第一周https://www.cnblogs.com/harperhjl/p/15772204.html
    第二周https://www.cnblogs.com/harperhjl/p/15771818.html
    第三周https://www.cnblogs.com/harperhjl/p/15772151.html
    第四周https://www.cnblogs.com/harperhjl/p/15777067.html

    二、遇到的问题及解决方法

    • 1)问题1:Linux下Qt应用软件没有启动图标?

    Ubuntu源码编译安装Qt后,没有自动创建图标,每次启动需要进入到目录下运行脚本,比较麻烦。可通过创建类似于windows系统的快捷方式进行快捷启动。
    快捷方式一般以.desktop后缀命名,并保存到/usr/share/applications 目录下,有固定的语法,但常用的应用快捷方式可用以下命令:
    [Desktop Entry]
    Encoding=UTF-8
    Name=软件的名称
    Comment=软件注释
    Exec=启动脚本路径
    Icon=软件的图标
    Terminal=是否打开终端
    StartupNotify=true
    Type=软件类别
    Categories=分类
    创建Qt5.9快捷方式:
    [Desktop Entry]
    Encoding=UTF-8
    Name=QtCreator
    Comment=QtCreator
    Exec=/home/jianwang16/Qt5.9.0/Tools/QtCreator/bin/qtcreator //根据自己电脑的安装路径
    Icon=/home/jianwang16/Qt5.9.0/5.9/Src/qtdoc/doc/src/images/qt-logo.png
    Terminal=false
    StartupNotify=true
    Type=Application
    Categories=Application;
    查看图标:在/usr/share/applications 目录下找到图标,手动拖拽到启动栏即可。

    • 2)cannot find -lGL错误

    这是因为Qt找不到OpenGL的动态链接库(libGL.so)。OpenGL在大部分 Linux 发行版中都是默认安装的,包括 Ubuntu、CentOS 等,找不到该链接库一般都是路径不对。
    Qt 默认在 /usr/lib/ 目录下查找动态链接库,但是很多 Linux 发行版将 OpenGL 链接库放在其它目录,例如我使用的是 CentOS 7,OpenGL 链接库位于 /usr/lib64/ 目录,而对于 Ubuntu,OpenGL 链接库位于 /usr/lib/i386-linux-gnu/mesa/ 目录。只要我们把 libGL.so 拷贝到 /usr/lib/ 目录,或者在 /usr/lib/ 目录下为 libGL.so 创建一个链接,就能解决问题。显然第二种办法更好。
    另外,Linux 发行版自带的 OpenGL 链接库在后缀中添加了版本号,例如 libGL.so.1、libGL.so.1.2.0、libGL.so.1.3.1 等,但是 Qt 在链接阶段查找的 OpenGL 链接库是不带版本号的。
    总起来说,我们需要在 /usr/lib/ 目录下为 OpenGL 链接库创建一个链接,并去掉版本号。
    如果不知道当前 Linux 系统中 libGL.so 的具体路径,可以使用locate libGL命令或find /usr -name libGL*命令查找,然后使用ln -s创建链接。
    //查找 libGL 所在位置
    [root@localhost ~]# locate libGL
    /usr/lib64/libGL.so
    /usr/lib64/libGL.so.1
    /usr/lib64/libGL.so.1.2.0
    /usr/share/doc/mesa-libGL-9.2.5
    /usr/share/doc/mesa-libGL-9.2.5/COPYING

    //创建链接
    [root@localhost ~]# ln -s /usr/lib64/libGL.so.1 /usr/lib/libGL.so
    Linux 系统中可能存在多个版本的 libGL.so,为任意一个版本创建链接即可。普通用户没有权限创建链接,所以我使用了 root 用户。
    完成以上操作,再次启动 Qt,然后编译或者运行,就不会出现“cannot find -lGL”错误了。

    • 3)在编译代码时出现错误信息,This function or variable may be unsafe

    在属性页面中找到“C/C++”——“预处理器”;
    在下面的编辑窗口中添加一句命令:_CRT_SECURE_NO_WARNINGS。
    添加完成后应用并退出。

    • 4)在对文件进行签名摘要时,选用摘要算法本想选择sm3,但在实践操作中显示签名失败,最后选择了sha256算法。
    	mdctx = EVP_MD_CTX_new();
    	EVP_MD_CTX_init(mdctx);	//初始化摘要上下文
    	if(!EVP_SignInit_ex(mdctx, EVP_sha256(), NULL))	//设置摘要算法
    	{
    		EVP_PKEY_free(pkey);
    		X509_free(SignCert);
    		X509_free(RecvCert);
    		PKCS12_free(p12);
    		printf("初始化摘要失败!\n");
    		return 0;
    	}
    
    • 5)openssl生成证书

    1.使用openssl工具生成一个RSA私钥
    使用命令:
    openssl genrsa -des3 -out server.key 2048
    如上:des3 是算法,2048位强度(为了保密性)。 server.key 是密钥文件名 -out的含义是:指生成文件的路径和名称。
    如下所示:

    我们查看刚刚生成的私钥。使用命令如下:
    openssl rsa -text -in server.key
    如下图所示:

    继续查看 server.key 使用命令:cat server.key, 如下图所示:

    2.创建证书签名请求CSR文件

    使用命令如下:

    openssl req -new -key server.key -out server.csr
    -key的含义是:指定ca私钥
    -out的含义是: server.csr 生成证书文件

    如下所示:

    运行如上命令后,生成CSR时会要求填入以下信息:

    Country Name (2 letter code) []:CN                        // 输入国家代码,中国填写 CN
    State or Province Name (full name) []:HangZhou            // 输入省份,这里填写 HangZhou
    Locality Name (eg, city) []:HangZhou                      // 输入城市,我们这里也填写 HangZhou
    Organization Name (eg, company) []:tbj                    // 输入组织机构(或公司名,我这里随便写个tbj)
    Organizational Unit Name (eg, section) []:tbj             // 输入机构部门
    Common Name (eg, fully qualified host name) []:*.abc.com  // 输入域名,我这边是 (*.abc.com)  
    Email Address []:tugenhua0707@qq.com                      // 你的邮箱地址
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:123456                            // 你的证书密码,如果不想设置密码,可以直接回车
    

    如上操作后,会在当前目录下生成以下两个文件:

    server.key server.csr

    如下图所示:

    查看csr文件如下命令:

    openssl req -text -in server.csr -noout
    如下图所示:

    3.生成CA证书

    openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
    x509的含义: 指定格式
    -in的含义: 指定请求文件
    -signkey的含义: 自签名

    如下图所示:

    注意:如上server.crt 是证书持有人的信息,持有人的公钥,以及签署者的签名等信息。

    4.生成客户端证书

    生成客户端证书与生成CA证书相似。

    (1)先要生成私钥

    使用命令:

    openssl genrsa -out client.key 2048
    如下图所示:

    (2)生成请求文件

    使用命令:

    openssl req -new -key client.key -out client.csr
    如下图所示:

    (3)发给ca签名

    使用命令:

    openssl x509 -req -days 365 -in client.csr -signkey client.key -out client.crt

    三、体会收获

    本次课程设计是非常考验我的能力,在课业压力较重的情况下通过和小组成员的合作完成任务,我觉得最为重要的是,小组合作发挥了绝对优势,大家一起取长补短,共同进步,我的组员帮助了我很多,带领我学习。在这个过程中,很多操作都是从零开始学习,对于文件的加解密签名验签,之前的学习只停留在理论层面,这次实验让我将其应用到实际,运用各种密码算法进行函数的使用,同时也感受到知识的无穷无尽,无论在书面知识上学习多么深厚,理论掌握的多么牢固,最重要的还是要联系操作联系实际,需要有一定的实践动手能力。本次实验也让我积累到了一些动手能力,但我深知自己还是有很多不足,应该在未来的学习中努力,使得自己各方面能力得到提高,特别是编程的能力,近一步提高自身的素质。

    四、参考资料

    [1]http://c.biancheng.net/view/3851.html
    [2]https://blog.csdn.net/u010058695/article/details/100730268?
    [3]https://www.cnblogs.com/webconfig/p/10768762.html
    [4]https://www.cnblogs.com/tugenhua0707/p/10927722.html
    [5]https://www.baidu.com/link?url=pJ7jdVvah-U4RgUSAMaSqoa9nvPTjHLg5mocwsOZ3Gq05_dbB8l2y367w69Va7RnVDXSTf1X6_g45EpFbAugSx-4A5OCM2wTquPjAYrDw4i&wd=&eqid=8fe5aadf001c23e90000000261d50002
    [6]https://blog.csdn.net/asbs12/article/details/51250288
    [7]https://slproweb.com/products/Win32OpenSSL.html
    [8]https://www.baidu.com/link?url=Hh1bg-RjO-a9qQwi38CeBsmdYVoElHWNuEPXesIkBJz9ZJl2l6JLzSzbr7L7XfKQMJbIdehcJAj6IVOy3yGh9VZAoYXzKUFQ1NUE-0tn6AS&wd=&eqid=ad1e6dcc000cfdcc0000000261d40b5e

  • 相关阅读:
    LeetCode "Median of Two Sorted Arrays"
    LeetCode "Distinct Subsequences"
    LeetCode "Permutation Sequence"

    LeetCode "Linked List Cycle II"
    LeetCode "Best Time to Buy and Sell Stock III"
    LeetCode "4Sum"
    LeetCode "3Sum closest"
    LeetCode "3Sum"
    LeetCode "Container With Most Water"
  • 原文地址:https://www.cnblogs.com/harperhjl/p/15778259.html
Copyright © 2011-2022 走看看