Cryptopp在VS上使用以及DES弱密钥测试

Cryptopp在VS上使用

  1. 克隆仓库

    git clone https://github.com/weidai11/cryptopp.git

  2. 运行文件中cryptest.sln

  3. 解决方案资源管理器中找到cryptlib中源文件cryptlib.cpp,在Debug和Release和x64(64位电脑)模式下运行。

  4. 在克隆的文件目录下的\x64\Output可以看见生成的Debug和Release文件夹,然后自己找个地方创建个文件夹这里我创建的文件夹为:F:\\Cryptopp_VS

  5. 创建include文件夹和lib文件夹。include放克隆的cryptlib项目的头文件。lib文件夹放刚刚生成的Debug和Release文件夹。

  6. VS新建项目,然后

    • 项目属性->C/C+±>常规->附加包含目录,加上刚刚的include文件夹路径F:\Cryptopp_VS\include;
    • 项目属性->链接器->常规->附加库目录,加上Debug和Release的目录,你要使用哪一个哪一个就排在前面。
    • 项目属性->链接器->输入->附加依赖项,加上cryptlib.lib
  7. 在项目属性->C/C+±>代码生成->运行库保持和克隆的cryptlib项目一致。

    反正报错error LNK2038: 检测到“RuntimeLibrary”的不匹配项就是这个原因

DES弱密钥测试

这里测试了几个弱密钥

#include<iostream>
#include<Cryptopp/des.h>
#include<Cryptopp/aes.h>
#include<Cryptopp/modes.h>
#include<string>
#include <iomanip>
using namespace std;
using namespace CryptoPP;void show(unsigned char key[DES::DEFAULT_KEYLENGTH]) {for (int i = 0; i < DES::DEFAULT_KEYLENGTH; i++) {cout << hex<<setw(2)<<setfill('0')<< (int)key[i] << " ";}
}
int main() {unsigned char key[DES::DEFAULT_KEYLENGTH] = {0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01};unsigned char input[DES::BLOCKSIZE] = "12345";//DES::BLOCKSIZE为8字节unsigned char output[DES::BLOCKSIZE];unsigned char output1[DES::BLOCKSIZE];//弱密钥unsigned char weakKetSets[4][DES::DEFAULT_KEYLENGTH] = {{0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01},{0x1F,0x1F,0x1F,0x1F,0x0F,0x0F,0x0E,0x0E},{0xE0,0xE0,0xE0,0xE0,0xF1,0xF1,0xF1,0xF1},{0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE}};//半弱密钥unsigned char halfWeakKey[4][DES::DEFAULT_KEYLENGTH]{{0x01,0xFE,0x01,0xFE,0x01,0xFE,0x01,0xFE},{0xFE,0x01,0xFE,0x01,0xFE,0x01,0xFE,0x01},{0x01,0xE0,0x01,0xE0,0x01,0xF1,0x01,0xF1},{0xE0,0x01,0xE0,0x01,0xF1,0x01,0xF1,0x01}};cout << "input is: " << input << endl;DESEncryption encryption_DES;cout << "----弱密钥测试----" << endl;//密码测试for (int i = 0; i < 4; i++) {encryption_DES.SetKey(weakKetSets[i], DES::KEYLENGTH);//设置加密器密钥encryption_DES.ProcessBlock(input, output);//进行加密encryption_DES.ProcessBlock(output, output1);if (memcmp(output1, "12345", 5)==0) {show(weakKetSets[i]);cout << "-->" << "YES" << endl;}else {show(weakKetSets[i]);cout << "-->" << "NO" << endl;}}cout << "----半弱密钥测试----" << endl;for (int i = 0; i < 4; i+=2) {encryption_DES.SetKey(halfWeakKey[i], DES::KEYLENGTH);encryption_DES.ProcessBlock(input, output);encryption_DES.SetKey(halfWeakKey[i+1], DES::KEYLENGTH);encryption_DES.ProcessBlock(output, output1);if (memcmp(output1, "12345", 5) == 0) {show(weakKetSets[i]);cout << endl;show(weakKetSets[i+1]);cout << "-->" << "YES" << endl;}else {show(weakKetSets[i]);cout << endl;show(weakKetSets[i+1]);cout << "-->" << "NO" << endl;}}system("pause");return 0;
}

参考:

  1. https://blog.csdn.net/diablof/article/details/72779265[error LNK2038报错]
  2. https://blog.csdn.net/IT_Guo_/article/details/103701403[VS配置cryptopp,如果按照上面配置失败,建议看看这个]
  3. https://www.cryptopp.com/wiki/Main_Page[cryptopp wiki]

Cryptopp在VS上使用以及DES弱密钥测试相关推荐

  1. Java黑皮书课后题第3章:*3.34(几何:线段上的点)编程练习题3.32显示了如何测试一个点是否在一个无限长的直线上。修改3.32测试一个点是否在一个线段上。编写程序,输入三个点坐标,显示在否线段

    *3.34(几何:线段上的点)编程练习题3.32显示了如何测试一个点是否在一个无限长的直线上.修改3.32测试一个点是否在一个线段上.编写程序,输入三个点p0 p1 p2坐标,显示p2在否线段p0p1 ...

  2. SVM 训练--在训练集上acc为94% 在测试集上为70%

    用SVM 训练的时候: 出现的问题是: Error: specified nu is infeasible 带有下标的赋值维度不匹配. 百度到的答案:赋值维度不匹配...说明等号两边的大小不一致,导致 ...

  3. 电脑上传网速怎么测试软件,宽带上传速度怎么测试 教你如何看电脑宽带上传速度...

    网速一般分为下载速度和上传速度,一般我们测算网速只是测试下载速度,只要电脑从网上下载速度快,用户通常比较满意.但你知道吗?上传速度也是值得关注的,尤其是在云网络时代,很多朋友都要传文件到网盘或者视频网 ...

  4. 土豆网我的视频不能看了,换到了优酷上,放一个上来测试一下.呵呵!

    土豆网我的视频不能看了,换到了优酷上,放一个上来测试一下.呵呵! 吉他弹唱:痛哭的人. posted on 2008-08-07 20:43 阿牛-专注金融行业开发 阅读(...) 评论(...) 编 ...

  5. Caffe上用SSD训练和测试自己的数据

        学习caffe第一天,用SSD上上手. 我的根目录$caffe_root为/home/gpu/ljy/caffe    一.运行SSD示例代码    1.到https://github.com ...

  6. springMVC--(讲解5)文件上传与传参测试

    2019独角兽企业重金招聘Python工程师标准>>> #1.下载jar包 <!-- file --><dependency><groupId>c ...

  7. ESP32片上模数转换ADC精度简单测试方案及测试数据分享

    了解ESP32测量电压的品质 ***ESP32结合Phyphox进行移动实验的技术,渐而形成为一个创作而学术的氛围,至少在国内是这样--大家能够把实验中遇到的问题和灵感互相启发,这确实是相当好的事情- ...

  8. 在Linux上安装Memcached服务(自己测试过了)

    软件版本自己可以下载 下载并安装Memcache服务器端 服务器端主要是安装memcache服务器端. 下载:http://www.danga.com/memcached/dist/memcached ...

  9. php本地测试还是线上,PHP本地与远程测试(一)

    很久没写PHP了.同样很很久没有用XDebug了,近期有个简单的场景要用到,简单记录一下关键步骤. 本地调试 本地环境: *************************************** ...

最新文章

  1. java操作elasticsearch实现query String
  2. user agent stylesheet对格式的影响
  3. 【计算机网络】深入浅出网络层(看不懂你来打我.上)
  4. 1.16 项目实例:Java图书信息查询
  5. 专门入侵检测linux叫什么,入侵检测系统分析及其在Linux下的实现(上)
  6. 网游服务端php5.1时间戳格式化,php格式化时间戳显示友好时间的简单示例
  7. latex 数学公式_技能分享——LaTeX篇I
  8. Taro+react开发(87):图片引入
  9. 计算机数学基础 刘树利,计算机数学基础课件教学课件作者刘树利11课件.ppt
  10. 百度直达号选错了对手 阿里腾讯还太嫩 干掉美团更直接
  11. 执行计划之CONCATENATION
  12. 绝大多数程序员不会测试
  13. 软件需求分析课堂讨论一
  14. Vue开发问题—— mescroll滚动懒加载,以及保留滚动条位置。
  15. 一个通过网络转换Ico到Png图片的小小程序(Ico2Png)
  16. 智能合约实现简单投票系统
  17. 社交礼仪之握手礼仪(转)
  18. DAMS | 突破运维瓶颈,监控告警、混合CMDB、DevOps转型一网打尽!
  19. java http 服务器搭建_基于http.server搭建局域网服务器过程解析
  20. IDA调试修改内存数据

热门文章

  1. FCPX剪辑,Final Cut Pro for Mac最好用的剪辑工具
  2. uniapp input输入框(小数点输入保留一位小数)
  3. VB 版 RGB 转 Lab 源代码
  4. HTML<HBuilder X>
  5. 手机电路的浪涌防护和TVS应用的电路实例
  6. 爱普生Epson Stylus C86 打印机驱动
  7. swiper禁止滑动
  8. 安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情
  9. Bootstrap 发布十周年,Bootstrap 5都有什么新功能?
  10. STATE_ERROR.VALIDATION_ERROR.90165