个人报告

一、贡献

环境调试;相关文档整理;前端设计;调试完善代码,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

原文链接: https://www.cnblogs.com/harperhjl/p/15778259.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    个人报告

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/184436

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 上午10:43
下一篇 2023年2月12日 上午10:44

相关推荐