crypto++下载、安装(VS2017)及加解密使用

news/2024/10/17 22:16:53/

crpto++

  • 下载
    • 按个人喜好下载,我使用了图中框选的8.8.0 Release.
    • 解压
  • 安装
    • 打开
    • 修改以适应本机配置
    • 整理至标准库
  • 调用
  • 加解密使用

Crypto++(也称为Crypto++ Library或Crypto++ STL)是一个C++密码学库,它提供了各种密码学算法和安全编程工具,使开发人员能够实现数据的加密、解密、签名、验证和其他密码学操作。Crypto++是一个开源项目,具有广泛的应用领域,包括网络通信、数据存储、安全协议、数字签名、加密文件系统等。

以下是Crypto++库的一些重要特点和功能:

  1. 丰富的密码学算法支持:Crypto++支持多种常见的密码学算法,包括对称加密(如AES、DES、3DES)、非对称加密(如RSA、DSA、ECC)、哈希函数(如SHA-1、SHA-256)、消息认证码(MAC)、数字签名、随机数生成器等。它还包括一些高级密码学功能,如密码模式、密码学模板库等。

  2. 跨平台:Crypto++是跨平台的,可以在多个操作系统(如Windows、Linux、macOS等)上运行,并且具有良好的可移植性。

  3. 高性能:Crypto++库经过优化,具有较高的性能,适用于要求快速加密和解密的应用程序。

  4. 开源和自由:Crypto++是一个开源项目,采用公共领域(Public Domain)许可证,因此可以自由使用、修改和分发,无需担心知识产权问题。

  5. 标准C++编写:Crypto++是用标准C++编写的,因此它与C++标准库和其他C++代码兼容。

  6. 灵活的API:Crypto++提供了一个灵活的API,使开发人员能够轻松地集成密码学功能到他们的应用程序中。

  7. 详细的文档和示例:Crypto++附带了丰富的文档和示例,帮助开发人员学习如何使用库中的功能。

Crypto++库是一个受欢迎的密码学库,许多安全敏感的应用程序和系统都在使用它来保护数据的安全性。它提供了强大的密码学工具,使开发人员能够构建安全可靠的应用程序。无论是加密通信、数字签名、文件加密还是其他密码学任务,Crypto++都是一个强大的工具。如果需要在C++应用程序中实现密码学功能,Crypto++是一个值得考虑的选择。

下载

按个人喜好下载,我使用了图中框选的8.8.0 Release.

官网下载
请添加图片描述

解压

请添加图片描述

安装

打开

请添加图片描述

修改以适应本机配置

  • 选用Release\Debug、Win32\x64,以Release-x64为例;

  • 选中cryptlib -> 属性 -> Windows SDK版本,适配当前VS版本
    请添加图片描述

  • C++ -> 代码生成 -> 运行库 (debug后面加d)
    请添加图片描述

  • 右键cryptlib、生成;

  • 修改其他三个SDK, 可以直接选中、右键、重定向项目更改

  • 重新生成cryptdll

  • 结果x64中DLL_Output和Output的生成的结果
    请添加图片描述
    请添加图片描述

请添加图片描述

整理至标准库

  • 创建文件夹cryptopp,并创建子文件夹bin、include、lib
  • 将解压包中所有的.h文件拷贝至include文件夹中,图中只显示部分.h文件
    请添加图片描述
    请添加图片描述
  • 将Output是生成的结果cryptopp.dll拷贝至bin中
    请添加图片描述
  • 将.lib拷贝至lib文件夹中
    请添加图片描述

调用

vs标准添加库方法,复述一遍。知道的可跳过。

  • 右键、属性\也可以在属性管理中对应的环境添加属性表,项目中只要添加对应属性表就可以调用对应库。
  • VC++ 目录中:
    • 包含目录添加上述include文件夹
    • 库目录添加上述lib文件夹
    • 链接器 -> 输入 -> 附加依赖项添加:cryptlib.lib 、cryptopp.lib

加解密使用

#include <aes.h>
#include <modes.h>
#include <filters.h>
#include <osrng.h>
#include <hex.h>int main(){using namespace CryptoPP;AutoSeededRandomPool rng;// 创建一个随机密钥SecByteBlock key(AES::DEFAULT_KEYLENGTH);rng.GenerateBlock(key, key.size());// 创建一个随机IV(初始化向量)SecByteBlock iv(AES::BLOCKSIZE);rng.GenerateBlock(iv, iv.size());// 要加密的字符串std::string plaintext = "Hello, World!";std::string ciphertext;// 加密CBC_Mode<AES>::Encryption encryption;encryption.SetKeyWithIV(key, key.size(), iv);StringSource(plaintext, true, new StreamTransformationFilter(encryption, new HexEncoder(new StringSink(ciphertext))));std::cout << "加密后的字符串: " << ciphertext << std::endl;// 解密std::string decryptedtext;CBC_Mode<AES>::Decryption decryption;decryption.SetKeyWithIV(key, key.size(), iv);StringSource(ciphertext, true, new HexDecoder(new StreamTransformationFilter(decryption, new 
StringSink(decryptedtext))));std::cout << "解密后的字符串: " << decryptedtext << std::endl;return 0;
}

请添加图片描述


http://www.ppmy.cn/news/1115813.html

相关文章

【Django项目记录:django admin后台将查询结果导出表格】

Django项目记录:django admin后台将数据导出表格 Django admin后台导出首先安装导出的插件(包)根据查询结果导出代码,在app文件夹中添加文件resources.py修改相对应的app的admin后端页面(admin.py)Django admin后台导出 首先安装导出的插件(包) pip install django-i…

无涯教程-JavaScript - RAND函数

描述 RAND函数返回大于或等于0且小于1的均匀分布的随机实数。每次计算工作表时,都会返回一个新的随机实数。 语法 RAND ()争论 RAND函数没有参数。 Notes 您可以在a和b之间生成一个随机实数,其中 RAND ()*(b-a)a 如果要使用RAND生成随机数,但又不想每次计算单元格时都更改…

【openwrt学习笔记】新patch的制作和旧patch的修改

目录 一、参考资料二、使用QUILT工具添加补丁2.1 添加一个新的补丁2.2 编辑一个已存在的补丁2.3 补丁命名规范2.4 添加或修改内核补丁文件 三、使用diff 打补丁四、相关问题及解决方法4.1 make package/package-name/update Vs失败 一、参考资料 Working with patches 二、使…

机器学习练习-决策树

机器学习练习-决策树 代码更新地址&#xff1a;https://github.com/fengdu78/WZU-machine-learning-course 代码修改并注释&#xff1a;黄海广&#xff0c;haiguang2000wzu.edu.cn 1&#xff0e;分类决策树模型是表示基于特征对实例进行分类的树形结构。决策树可以转换成一个if…

Vue小笔记

官网中文手册 常用命令 vue3特性 reactive():函数接收一个复杂数据类型的数据&#xff08;对象或数组&#xff09;作为参数&#xff0c;并返回一个响应式代理对象。&#xff08;响应式数据即当数据发生变化时 UI 也会自动更新&#xff09; ref():函数接收一个基本数据类型的…

编程(48)----------网页打开的过程

一个网页的打开大致分为以下几步: 1.DNS查询 在进行网络访问过程中, 实际上所访问的是IP地址. 但输入的却仅仅是域名. 因为IP地址过于复杂不利于记忆. 因此, 需要将IP转换成更具有辨识度的域名. 通过输入域名, 以DNS进行转换为IP, 再发起请求. DNS在得到域名后会进行查询, …

【Vue】vue2使用vue-pdf预览pdf文件,预览多页,在线预览方式二,vue页面内预览,无需额外pdfjs包,保姆级教程

系列文章目录 【Vue】vue2预览显示quill富文本内容&#xff0c;vue-quill-editor回显页面&#xff0c;v-html回显富文本内容 【Vue】vue2项目使用swiper轮播图2023年8月21日实战保姆级教程 【Vue】vue2使用pdfjs预览pdf文件&#xff0c;在线预览方式一&#xff0c;pdfjs文件包…

二叉树oj题

目录 层序遍历(一) 题目 思路 代码 层序遍历(二) 题目 思路 代码 根据二叉树创建字符串 题目 思路 代码 二叉树的最近公共祖先 题目 思路 代码 暴力版 队列版 栈版 bs树和双向链表 题目 思路 代码 前序中序序列构建二叉树 题目 思路 代码 中序后序…