-
将整个文件夹添加到qt项目中_OpenSSL源码在Win中的编译,以及如何给软件加密的大致思路...
2021-01-12 17:03:00Windows中OpenSSL源码的编译1.1 Ingredients1.2 开始编译采用OpenSSL对软件进行加密服务端上客户端加密效果1. Windows中OpenSSL源码的编译不说Linux中的编译1.1 Ingredientsopenssl-3.0源码perl(提前安装一下)dmake...目录
1. Windows中OpenSSL源码的编译1.1 Ingredients1.2 开始编译采用OpenSSL对软件进行加密服务端上客户端加密效果
1. Windows中OpenSSL源码的编译
不说Linux中的编译
1.1 Ingredients
openssl-3.0源码
perl(提前安装一下)
dmake(编译过程需要,可以用perl的命令下载,但是下不动,自己从网上找一个 dmake.exe下载下来拷贝过去就行)
nasm
VS2017
这几个我都打包好了(除了VS2017,VS2017在之前的推送中放过),放在以下的百度云中:
链接:https://pan.baidu.com/s/1nZQYhR9XoxP8i8zpWimsKA
提取码:Hong
dmake.exe拷贝到
perl目录/site/bin
中去。
nasm.exe 所在的路径要添加到环境变量Path中1.2 开始编译
安装 perl 记得勾选 添加到路径
把nasm.exe所在路径添加到环境变量中
把 dmake.exe 拷贝到 perl路径/site/bin 中去
打开VS的这个命令行(要右键,以管理员身份运行)
输入:
cd 你的OpenSSL源码路径
perl Configure VC-WINA --prefix 输出目录然后
nmake
中间得等一会!
nmake install等个好一会就好了。
我们需要从
源码目录
的 ms目录下 把 applink.c 文件拷贝到输出目录的 include 目录
中。在写程序的时候要把这个applink.c 包含到使用OpenSSL库函数的Cpp文件中(不要放在头文件中包含,直接在main.cpp中包含进来就行)编译好后:
采用OpenSSL对软件进行加密
这部分不分享源码了,源码太太太多了,也不方便整理,简单说说思路吧。
其实,思路还是和上次的那篇推送一样,不过,上次是用Python做的,这回是用C++做。
服务端上
直接采用编译出来的OpenSSL的可执行程序来生成公私密钥对,或者采用OpenSSL的函数来生成也行。密钥对生成一次就够了。
利用私钥
,对客户发送过来的计算机硬件指纹进行签名,把签名写入到文件中,然后发送给客户。
但是,OpenSSL生成签名的函数:生成的是一个二进制的签名数据,还有这个数据的大小。我们需要对这个二进制数据进行编码,编码成一个字符串。OpenSSL有Base64的编码函数,我们可以拿来用。
我们可以用XML来保存编码后的字符串,以及编码后的数据大小。把这个XML文件保存成
license.lic
,这样就是一个许可证文件了:XML文件中的内容
XML文件就是被设计用来传输数据的,Qt有XML文件读写的函数,后期有空的话我也会写相关的推送。
我们把这个
license.lic
发给客户,客户端程序解析出其中的编码后的签名,然后对其解码,解码成二进制数据,再传给OpenSSL的验证签名的函数。客户端
首先获取本机的硬件指纹
读取从服务端发过来的
license.lic
文件,解析出其中的签名数据,用相同的方式对其进行解码,解码回二进制值。利用
公钥
对签名进行验证如果验证通过,才进入界面,不然直接退出
在利用公钥对签名验证这有点小问题:我们不能把公钥直接暴露给客户,如果客户用他自己的公钥来替换我的公钥那么就gg了!所以我们应该事先把公钥写入到程序中!但是OpenSSL的函数貌似只能从文件中读取公钥,所以这就麻烦了!下面我提供两种解决办法:
法1:使用Qt的情况下
我们可以把公钥文件放到资源文件里面,一块编译到程序中!但是这存在一个问题,Qt资源文件中的文件只能给Qt的库函数来读取标准C/C++中的函数是读不到Qt资源文件中的东西的!
我们可以用
QTemporaryDir
来创建一个临时文件夹然后用QFile来读取资源文件中的公钥,把其中的字符串读出来
在上面创建的临时文件夹中用QFile来创建一个文件,把公钥中的字符串写入到这个临时公钥文件里去。
最后用OpenSSL的函数来读取这个临时文件夹中的临时的公钥文件。
当
QTemporaryDir
对象删除时,临时文件夹也就删除了
这样就不用担心公钥泄露出去了!
法2:不用Qt的情况下
要不用Qt的话,就只能把公钥文件中的内容复制出来,放到一个字符串中,剩下的步骤还是和上面类似。
只不过这样就稍微麻烦点,万一我们换了密钥对的话,还得去改代码,要是用Qt就不用改代码了,直接把文件拷贝过去,重新编译下就行!
加密效果
没有许可证的情况下:
点击
ok
后必须要找我要许可证才行。
验证一下是否真的一台电脑只能用一个独一无二的许可证
我找我师弟帮我试了一下
开始时,发给他的是我自己电脑的许可证,他那用不了,如下图:
后面他把他的计算机硬件指纹发给我,我生成了一个许可证发给他然后才能用!
最后打开是这样
初始化界面
其他工作界面等
整个程序写了两周,乱七八糟的对一块,快上万行C++代码了(有用的估计顶多5000行不到吧),也算是对这断断续续学了一个多学期的C++/Qt有个大的复习了
-
单行溢出隐藏没生效_保护隐私,清理电脑,无需软件,隐藏磁盘分区
2020-12-31 11:27:35之前提到过,如何隐藏加密文件夹没看过可以去看我的第一篇文章。有时候,我们整个硬盘可以存放了自己个人的资料,借给别人时不想让别人看到,有时候,磁盘分区比较多,短时间不用,想要隐藏起来。我们无需使用软件,...之前提到过,如何隐藏加密文件夹没看过可以去看我的第一篇文章。
有时候,我们整个硬盘可以存放了自己个人的资料,借给别人时不想让别人看到,有时候,磁盘分区比较多,短时间不用,想要隐藏起来。我们无需使用软件,可以借助系统自身工具对整个硬盘分区进行隐藏,有以下两种方法。
方法一: 注册表修改
Win+R输入“regedit”,回车运行,进入注册表编辑器
依次打开“HKEY_CURRENT_USERSoftwareMicrosoftWindows CurrentVersionPolicesExplorer”
在右边窗体空白处单击右键,选“新建二进制值”,重命名为“NoDrives”。
双击该键值,输入00 00 00 00(不带空格,直接输入)
其中第一组“00”代表A-H盘,第二组“00”代表I-P盘,三、四组依此类推。
(00 00 00 00 表示全部分区都显示出来,无隐藏分区)。
将第一组“00”改为01可隐藏A盘,改为02可隐藏B盘,改为04可隐藏C盘,改为08可隐藏D盘,改为10隐藏E盘,改为20可隐藏F盘,改为40可隐藏G盘,改为80可隐藏H盘(规律为1,2,4,8)。
例如,想隐藏的是D盘,将键值改为“08 00 00 00”即可。
若是隐藏两个及以上分区可以把两组及几组数字相加。
修改完毕后,不论是隐藏还是恢复显示都是立即生效。直接回“我的电脑”中,刷新后就看不到该盘了,如果不能立即生效,重启电脑生效。
想要使用该硬盘时,可以在我的电脑地址栏中输入D:,即可打开D盘。,想要显示D盘时,将键值重新改为默认值“00 00 00 00”即可。
方法二: 磁盘管理工具中修改
(win 7)右键点击桌面上或者开始菜单中的“计算机”图标,然后弹出菜单中的“管理”,则打开计算机管理窗口(如下图),即可看到左侧菜单的“磁盘管理”项,打开后,即可看到硬盘分区。
(win 10) ,右键点击开始按钮,即可看到磁盘管理,进入即可
例如隐藏D盘,右击待该分区,选中“更改驱动器号和路径”
在弹出窗口中选中“删除”,然后弹出警告窗口
核实之后,点击“是”即可。重启电脑即生效
此方法删除驱动器号,可以实现永不显示,想要再次显示,我们可以进入磁盘管理,找到没有盘符分区,如下图
右键更改驱动器号和路径
选择添加
系统会自动分配盘符,选择D然后 确定就好了
(注意,安装软件的硬盘不可删除,删除之后,软件将不能工作,再次恢复时,必须恢复为删除之前的盘符后才能正常使用软件,例如安装软件的硬盘为F盘,右键更改驱动器号和路径,添加时必须也为F。)
-
C#编程经验技巧宝典
2008-06-01 08:59:33115 <br>0192 如何获取“我的文档”系统文件夹路径 115 <br>0193 如何获取应用程序当前执行的路径 116 <br>0194 如何获取当前操作系统的信息 116 <br>0195 如何实现基本数据类型随意转换 116... -
citrix 中文管理操作手册
2009-11-04 12:05:31生成密钥并在场中的第一台服务器上启用 IMA 加密 155 将密钥加载到场中的后续服务器 156 将密钥存储到共享位置 156 将密钥存储到网络位置 156 更改场 157 其他 IMA 加密功能 157 备份密钥 157 检索丢失的密钥 157 ... -
网管教程 从入门到精通软件篇.txt
2010-04-25 22:43:49小编的确一直都想把这方面的命令做个总结,这次辛苦老范给我们整理了这份实用的秘笈。 Bootcfg bootcfg 命令启动配置和故障恢复(对于大多数计算机,即 boot.ini 文件)。 含有下列参数的 bootcfg 命令仅在... -
C#开发实战1200例(第一卷+第二卷)+源码下载地址.txt
2019-05-17 09:24:24主要内容有C#开发环境的使用、C#语言基础应用、字符串处理技术、数组和集合...文件夹基本操作、文件流操作、加密、解密及解压缩文件、C#与Word互操作、高效应用Excel、基本图形绘制、图像处理技术、常用图表应用、动画... -
C#开发实战1200例(第1卷).(清华出版.王小科.王军.扫描版).part1
2016-06-16 20:55:43书名:《C#开发实战1200例(第I卷)》(清华大学出版社.王小科.王军) PDF格式扫描版,全书分为6篇25章,共888页。2011年1月出版。 注:原电子版图书无书签,为阅读方便...实例295 使用FolderBrowserDialog组件选择文件夹 ... -
C#开发实战1200例(第1卷).(清华出版.王小科.王军.扫描版).part2
2016-06-16 20:59:52书名:《C#开发实战1200例(第I卷)》(清华大学出版社.王小科.王军) PDF格式扫描版,全书分为6篇25章,共888页。2011年1月出版。 注:原电子版图书无书签,为阅读方便...实例295 使用FolderBrowserDialog组件选择文件夹 ... -
C#开发实战1200例(第1卷).(清华出版.王小科.王军.扫描版).part3
2016-06-16 21:02:21书名:《C#开发实战1200例(第I卷)》(清华大学出版社.王小科.王军) PDF格式扫描版,全书分为6篇25章,共888页。2011年1月出版。 注:原电子版图书无书签,为阅读方便...实例295 使用FolderBrowserDialog组件选择文件夹 ... -
C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载
2018-02-20 01:26:55主要内容有C#开发环境的使用、C#语言基础应用、字符串处理技术、数组和集合...文件夹基本操作、文件流操作、加密、解密及解压缩文件、C#与Word互操作、高效应用Excel、基本图形绘制、图像处理技术、常用图表应用、动画... -
Visual Basic开发实战1200例(第Ⅰ卷).(清华出版.孙秀梅.巩建华).part1
2016-06-14 11:19:42实例234 整个窗体铺满图片 8.2 主界面应用实例 实例235 类似超级兔子的程序界面 实例236 类似瑞星的导航主界面 实例237 类似Windows XP的程序界面 实例238 Outlook式主界面 实例239 可以用鼠标切分的窗体 ... -
无线路由破解软件
2012-07-10 22:52:05如果你不知道何谓wep、wpa,请百度一下,会给你一个专业的回答。最简单的解释就是无线信号的密码,后者比前者加密程度高。 2、本文力求以傻瓜式、菜鸟式的方法解决问题,适合像我一样不懂的菜鸟。 下面... -
vc++ 应用源码包_1
2012-09-15 14:22:12精灵系统,一套MFC渲染引擎,含2D/3D等渲染,效果看源码,IFEngine是整个引擎接口,IFSystem是硬件查询系统,IFApplication是应用程序对象基类。 FlashPlayer播放器4.0的VC++源代码 FreeBird2011最初版(模仿飞鸽,可... -
vc++ 应用源码包_2
2012-09-15 14:27:40精灵系统,一套MFC渲染引擎,含2D/3D等渲染,效果看源码,IFEngine是整个引擎接口,IFSystem是硬件查询系统,IFApplication是应用程序对象基类。 FlashPlayer播放器4.0的VC++源代码 FreeBird2011最初版(模仿飞鸽,可... -
vc++ 应用源码包_6
2012-09-15 14:59:46精灵系统,一套MFC渲染引擎,含2D/3D等渲染,效果看源码,IFEngine是整个引擎接口,IFSystem是硬件查询系统,IFApplication是应用程序对象基类。 FlashPlayer播放器4.0的VC++源代码 FreeBird2011最初版(模仿飞鸽,可... -
vc++ 应用源码包_5
2012-09-15 14:45:16精灵系统,一套MFC渲染引擎,含2D/3D等渲染,效果看源码,IFEngine是整个引擎接口,IFSystem是硬件查询系统,IFApplication是应用程序对象基类。 FlashPlayer播放器4.0的VC++源代码 FreeBird2011最初版(模仿飞鸽,可... -
vc++ 应用源码包_4
2012-09-15 14:38:35精灵系统,一套MFC渲染引擎,含2D/3D等渲染,效果看源码,IFEngine是整个引擎接口,IFSystem是硬件查询系统,IFApplication是应用程序对象基类。 FlashPlayer播放器4.0的VC++源代码 FreeBird2011最初版(模仿飞鸽,可... -
vc++ 应用源码包_3
2012-09-15 14:33:15精灵系统,一套MFC渲染引擎,含2D/3D等渲染,效果看源码,IFEngine是整个引擎接口,IFSystem是硬件查询系统,IFApplication是应用程序对象基类。 FlashPlayer播放器4.0的VC++源代码 FreeBird2011最初版(模仿飞鸽,可... -
下载本仓库,然后拷贝aliyun_mqtt_app文件夹到SDK主目录,用法类似于ESP8266_NONOS_SDK/examples里面的工程; 在ESP8266 IDE里导入整个SDK,如果不熟悉该环境,参考这里; 使用SDKv3.0.0还需要修改该SDK的顶层...
-
023《FireShot》一键滚动截屏整个网页 022《扩展管理器》管理你的Chrome扩展 021《哔哩哔哩助手》助你快速成为B站老司机 020《Boxel Rebound》“嗨到中毒”的弹跳小方块(附自制赛道分享方法) 019《MEGA》...
-
普遍使用的 Android APP 技术架构,往往是在一个界面中存在大量的业务逻辑,而业务逻辑中充斥着各种网络请求、数据操作等行为,整个项目中也没有模块的概念,只有简单的以业务逻辑划分的文件夹,并且业务之间也是...
-
.htaccess
2007-07-19 01:51:18If you only specify 1 or 2 of the groups of numbers, you will block a whole range. 这里的000.000.000.000是被封禁的IP地址,如果你只指明了其中的几个,则可以封禁整个网段的地址。如你输入210.10.56.,则... -
入门学习Linux常用必会60个命令实例详解doc/txt
2011-06-09 00:08:45它会使mount不执行实际挂上的动作,而是模拟整个挂上的过程,通常会和-v一起使用。 -t vfstype:显示被加载文件系统的类型。 -n:一般而言,mount挂上后会在/etc/mtab中写入一笔资料,在系统中没有可写入文件...
-
《文本处理 awk sed grep ”三剑客”》
-
大学物理第一章.doc
-
UL 2333:2019 Standard for Infrared Thermometers(红外测温仪标准)-最新完整英文版(23页)
-
案例——存储字符串并遍历——ArrayList集合
-
对联广告带关闭代码.rar
-
朱老师鸿蒙系列课程第1期-3.鸿蒙系统Harmonyos源码配置和管理
-
Unity RUST 逆向安全开发
-
单向环形链表解决joseph约瑟夫环问题(java实现)
-
python Flask+scrapy+人工智能 实现高性能搜索引擎
-
NFS 实现高可用(DRBD + heartbeat)
-
UL 1180:2017 完全充气的娱乐式个人浮选装置(如救生圈) - 完整英文版(110页)
-
区块猫区块龙猫猫乐园宠物区块链页面超大气可封装.zip
-
压栈, 跳转,执行,返回:从汇编看函数调用
-
MySQL 视图
-
WiFi 知识学习方法-网络,通信,协议与帧格式
-
C#连接Excel读取与写入数据库SQL ( 上 )
-
Session
-
C#Winform桌面开发编程上位机基础入门
-
单链表、单链表反转、单链表的倒叙打印
-
队列、使用数组模拟环形队列