当前位置: 首页 > news >正文

西乡移动网站建设seo网站排名全选

西乡移动网站建设,seo网站排名全选,wordpress 文章id,怎么发外链环境#xff1a;Windows11 64位 工具链#xff1a;MinGW32 IDE#xff1a;Qt 5.14 Qt使用DES加密需要用到OpenSSL库#xff0c;首先要确定当前使用的Qt所支持的SSL版本。编译OpenSSL 查看当前Qt对OpenSSL的支持情况 qDebug() QSslSocket::supportsSsl();返回 tr… 环境Windows11 64位 工具链MinGW32 IDEQt 5.14 Qt使用DES加密需要用到OpenSSL库首先要确定当前使用的Qt所支持的SSL版本。编译OpenSSL 查看当前Qt对OpenSSL的支持情况 qDebug() QSslSocket::supportsSsl();返回 true 则表示系统支持OpenSSL返回 false 表示系统不支持OpenSSL。 查看Qt所支持的OpenSSL版本 OpenSSL在版本兼容性问题上是出了名的所以必须要搞清楚自己所用Qt版本所支持的OpenSSL版本。用如下代码进行OpenSSL版本查看 qDebug() QSslSocket::sslLibraryBuildVersionString();下载对应版本的OpenSSL 根据自己操作系统的种类以及位数下载对应的OpenSSL版本下载地址如下 OpenSSL官网下载地址 编译源码 本篇文章主要讲解的是MinGW编译方法需要用到msys2。 下载安装msys2 推荐使用清华的镜像网站下载速度快。 官网网址不推荐 清华镜像推荐 选择一个版本下载我选择的是20220503的版本。 下载源码后将源码解压到 msys\home\用户名\路径下。 更改msys2的下载源 刚下载的msys2使用的默认源在国外所以下载东西非常慢需要自己更改成国内的源。 打开安装目录下的 \etc\pacman.d 可以看到下图中红框中的三个文件 用记事本打开 mirrorlist.msys 在文本的最上面加上这句代码 Server https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch同理使用记事本打开 mirrorlist.mingw32 在最上面增加 Server https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686修改 mirrorlist.mingw64 同理在最上面增加 Server https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64在安装路径下找到msys.exe打开执行下面指令更新 pacman -Syu配置msys2的MinGW环境 我需要编译的是32位的OpenSSL需要安装mingw32的环境。 在安装目录下打开mingw32.exe。打开后先用pacman -Syu指令更新一下下载列表防止还是用旧的源。下载C编译所需文件。 pacman -S mingw-w64-i686-toolchain安装gcc pacman -S gcc安装make pacman -S make编译源码生成动态库 进入openssl的文件夹 cd openssl-1.1.1d/配置编译环境 ./config -shared编译等待个几分钟 make编译过程中会有很多警告无视即可然后在\openssl-1.1.1d\test就能找到两个动态库libcrypto-1_1.dll和libssl-1_1.dll。 使用Qt调用OpenSSL 新建测试项目 在源码路径下新建libs和openssl文件夹复制libcrypto-1_1.dl和libssl-1_1.dll到libs文件夹下复制openssl-1.1.1k/include目录到openssl文件夹下 配置工程.pro文件 添加引用库 LIBS -L$$PWD/libs/ -llibcrypto-1_1 -llibssl-1_1添加头文件路径 INCLUDEPATH $$PWD/openssl/include编写代码 我测试的是DES ECB方式解密解密需要引用相应的头文件 #include openssl/des.h// 加密函数 // 加密 ecb模式 QByteArray DesEcb::des_encrypt(const std::string clearText, const std::string key) {// DES加密分为两个阶段// 第一阶段是设置密钥从密钥生成DES_key_schedule// 第二阶段是实际加密std::string cipherText; // 密文// 第一阶段设置密钥// DES的密钥类型是DES_cblock8位DES_cblock keyEncrypt;memset(keyEncrypt, 0, 8);// 构造补齐后的密钥if(key.length() 8)memcpy(keyEncrypt, key.c_str(), key.length());elsememcpy(keyEncrypt, key.c_str(), 8);// 密钥置换DES_key_schedule keySchedule;DES_set_key_unchecked(keyEncrypt, keySchedule);//DES_set_key_checked(keyEncrypt, keySchedule);// 第二阶段实际加密// 循环加密每8字节一次const_DES_cblock inputText; // 加密前的输入8字节DES_cblock outputText; // 加密后的输出std::vectorunsigned char vecCiphertext; // 加密后的密文unsigned char tmp[8]; // 记录加密过程中的数据块的数据for(int i 0; i clearText.length() / 8; i) {memcpy(inputText, clearText.c_str() i * 8, 8);DES_ecb_encrypt(inputText, outputText, keySchedule, DES_ENCRYPT);memcpy(tmp, outputText, 8);for(int j 0; j 8; j)vecCiphertext.push_back(tmp[j]);}// PkCs5padding填充模式// 数据块大小固定为8数据长度// 需要填充n(n0)个字节才对齐那么填充n个字节每个字节都是n// 如果数据本身就已经对齐了则填充一块长度为块大小的数据每个字节都是块大小8if(clearText.length() % 8 0) {//PkCs5paddingmemset(inputText, 8, 8);// 加密函数DES_ecb_encrypt(inputText, outputText, keySchedule, DES_ENCRYPT);memcpy(tmp, outputText, 8);for(int j 0; j 8; j)vecCiphertext.push_back(tmp[j]);}if(clearText.length() % 8 ! 0) {// PkCs5paddingint tmp1 clearText.length() / 8 * 8;int tmp2 clearText.length() - tmp1;int padNumber 8 - tmp2;//最后一个需要补齐的数据块需要补齐的位数memset(inputText, padNumber, 8);memcpy(inputText, clearText.c_str() tmp1, tmp2); //最后一个补齐的数据块// 加密函数DES_ecb_encrypt(inputText, outputText, keySchedule, DES_ENCRYPT); //DES_ENCRYPT代表加密memcpy(tmp, outputText, 8);for(int j 0; j 8; j)vecCiphertext.push_back(tmp[j]);}cipherText.clear();cipherText.assign(vecCiphertext.begin(), vecCiphertext.end());QByteArray tempArray;foreach (auto var, vecCiphertext) {tempArray.append(var);}return tempArray; }// 解密 std::string DesEcb::des_decrypt(const std::string cipherText, const std::string key) {std::string clearText; // 明文DES_cblock keyEncrypt;memset(keyEncrypt, 0, 8);if(key.length() 8)memcpy(keyEncrypt, key.c_str(), key.length());elsememcpy(keyEncrypt, key.c_str(), 8);DES_key_schedule keySchedule;DES_set_key_unchecked(keyEncrypt, keySchedule);const_DES_cblock inputText;DES_cblock outputText;std::vectorunsigned char vecCleartext;unsigned char tmp[8];for(int i 0; i cipherText.length() / 8; i) {memcpy(inputText, cipherText.c_str() i * 8, 8);DES_ecb_encrypt(inputText, outputText, keySchedule, DES_DECRYPT); //DES_DECRYPT代表解密memcpy(tmp, outputText, 8);for (int j 0; j 8; j) {if(tmp[j] 31) //31是什么意思vecCleartext.push_back(tmp[j]);}}if(cipherText.length() % 8 ! 0) {int tmp1 cipherText.length() / 8 * 8;int tmp2 cipherText.length() - tmp1;memset(inputText, 0, 8);memcpy(inputText, cipherText.c_str() tmp1, tmp2);// 解密函数DES_ecb_encrypt(inputText, outputText, keySchedule, DES_DECRYPT);memcpy(tmp, outputText, 8);for(int j 0; j 8; j)vecCleartext.push_back(tmp[j]);}clearText.clear();clearText.assign(vecCleartext.begin(), vecCleartext.end());return clearText; }附项目源码 参考链接 https://blog.csdn.net/l1206715877/article/details/125120888https://blog.csdn.net/YinShiJiaW/article/details/106220932https://www.cnblogs.com/rockyching2009/p/14989873.htmlhttps://www.codenong.com/cs106278466/
http://www.dnsts.com.cn/news/60762.html

相关文章:

  • 鲜花网站源码wordpress 更换服务器
  • php和织梦那个做网站好随州制作网站
  • 百度验证网站的好处广州地铁5号线
  • 东莞做阀门的网站百姓网网站源码
  • 一个最简单的产品展示的asp网站应该如何做无法更新网站主页 dedecms
  • 海珠建网站公异构国际设计公司网站
  • 可以做软件的网站怎么查网站的注册信息
  • 建设一个网站需要什么硬件做网站 搜索引擎
  • 平东网站建设哪里有响应式网站企业
  • 温州网站优化价格弄个本科学历需要多少钱
  • 17zwd一起做网店潮汕站广州市招标公告
  • 有做模仿易企秀网站吗青岛做网站的公司
  • 公司网站应达到的功能如何向百度提交网站
  • 长沙网站建搜索引擎优化的核心本质
  • dede网站地图标签泰安刘明是怎么挨办的
  • 网站seo流程计算机开发工具有哪些
  • 民族团结 网站建设微信公众号登录不上
  • 网站托管就业建筑工程公司取名免费
  • 怎么查看网站有没有备案商城网站流量
  • 成都教育网站建设公司价格怎么让网站快速被收录
  • 自助商城网站建设seo兼职网
  • 网站建设官方商城网站推广工作总结
  • 为何网站需改版北龙建设集团有限公司企业网站
  • 企业网站外包建设网站命名的原则包括
  • 汝州网站建设汝州招工最新招聘信息
  • 做网站需要画原型图么网店代运营一年的费用是多少
  • 十堰 网站建设深圳市光明区住房和建设局
  • 湖北省和建设厅网站首页建站平台 选择
  • 企业介绍微网站怎么做的建设网站课程设计摘要
  • 质感设计网站微信朋友圈软文大全