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

news2024/9/24 5:33:27

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.coloradmin.cn/o/1019749.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

20230917后台面经总结

1.ping底层原理 Ping 是 ICMP 的一个重要应用&#xff0c;主要用来测试两台主机之间的连通性。Ping 的原理是通过向目的主机发送 ICMP Echo 请求报文&#xff0c;目的主机收到之后会发送 Echo 回答报文。Ping 会根据时间和成功响应的次数估算出数据包往返时间以及丢包率。 基…

vue项目 高德地图搜索带关键字效果demo(整理)

<!-- 高德地图引入 --> <script type"text/javascript">window._AMapSecurityConfig {securityJsCode: be00dfb4bcd4b18dd7760486c40aa1ed, //秘钥} </script> <!-- <script type"text/javascript" src"./qrcode.js"&g…

如何解决 503 Service Temporarily Unavailable?

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f6e0;️ 全栈技术 Full Stack: &#x1f4da…

Prompt-To-Prompt——仅通过文本进行图像编辑

文章目录 1.摘要2.算法2.1 Cross-attention in text-conditioned Diffusion Models2.2 Controlling the Cross-attentionWord SwapAdding a New PhraseAttention Re–weighting 3.应用Text-Only Localized EditingGlobal editingFader Control using Attention Re-weightingRea…

【QT5-解决不同分辨率屏幕-进行匹配大小-适应屏幕大小-基础样例】

【QT5-解决不同分辨率屏幕-进行匹配大小-适应屏幕大小】 1、前言2、实验环境3-1、问题说明-屏幕视频3-2、解决方式-个人总结解决思路&#xff1a;我们在软件启动的时候&#xff0c;先获取屏幕大小&#xff0c;然后根据长宽&#xff0c;按照一定比例&#xff0c;重新设置大小。并…

如何用思维导图做备考计划

大学除了上课&#xff0c;还有很多事情需要我们去做&#xff0c;比如说期末考试、考证等。思维导图作为一种高效的思维工具&#xff0c;可以帮助我们整理和规划备考内容。今天我们就将探讨如何用思维导图做备考计划&#xff0c;并提供一些实用的建议。甘特图&#xff08;Gantt …

flutter开发实战-自定义长按TextField输入框剪切、复制、选择全部菜单AdaptiveTextSelectionToolba样式UI效果

flutter开发实战-自定义长按TextField输入框剪切、复制、选择全部菜单样式UI效果 在开发过程中&#xff0c;需要长按TextField输入框cut、copy设置为中文“复制、粘贴”&#xff0c;我首先查看了TextField中的源码&#xff0c;看到了ToolbarOptions、AdaptiveTextSelectionToo…

工作5年,没用过分布式锁,正常吗?

公司想招聘一个5年开发经验的后端程序员&#xff0c;看了很多简历&#xff0c;发现一个共性问题&#xff0c;普遍都没用过分布式锁&#xff0c;这正常吗&#xff1f; 下面是已经入职的一位小伙伴的个人技能包&#xff0c;乍一看&#xff0c;还行&#xff0c;也没用过分布式锁。…

基于Java的新能源充电系统的设计与实现(亮点:完整合理的充电流程,举报反馈机制、余额充值、在线支付、在线聊天)

新能源充电系统 一、前言二、我的优势2.1 自己的网站2.2 自己的小程序&#xff08;小蔡coding&#xff09;2.3 有保障的售后2.4 福利 三、开发环境与技术3.1 MySQL数据库3.2 Vue前端技术3.3 Spring Boot框架3.4 微信小程序 四、功能设计4.1 主要功能描述 五、系统实现5.1 完整充…

【Python】自动化办公之路:word自动化实战宝典!

文章目录 前言一、环境安装二、使用步骤1.引入库2.读入数据 Python-docx 编辑已存在文档win32com 将 doc 转为 docxwin32com 操作 word总结 前言 使用Python操作word大部分情况都是写操作&#xff0c;也有少许情况会用到读操作&#xff0c;在本次教程中都会进行讲解&#xff0…

GitHub无法访问的解决方法

每次刚装完系统我们访问GitHub就会出现无法访问的情况&#xff0c;此时只需要修改host文件将可访问的dns解析地址写入进去即可。 查询DNS 使用dns监测查询工具 https://tool.chinaz.com/dns https://dnsdaquan.com/ 输入无法访问的IP github.com 进行检测 查询到可访问的i…

HarmonyOS应用开发Web组件基本属性应用和事件

一、Web组件概述 Web组件用于在应用程序中显示Web页面内容&#xff0c;为开发者提供页面加载、页面交互、页面调试等能力。 页面加载&#xff1a;Web组件提供基础的前端页面加载的能力&#xff0c;包括加载网络页面、本地页面、Html格式文本数据。页面交互&#xff1a;Web组件提…

【C刷题训练营】第四讲(打好基础很重要)

前言: 大家好&#xff0c;这是c语言刷题训练营的第四讲&#xff0c;打好基础便于对c语言语法与算法思维的提高&#xff0c;感谢你的来访与支持&#xff01; &#x1f4a5;&#x1f388;个人主页:​​​​​​Dream_Chaser&#xff5e; &#x1f388;&#x1f4a5; ✨✨刷题专栏…

QT工具MaintenanceTool.exe如何管理组件(解决“要继续此操作,至少需要一个有效且已启用的储存库”问题)

试了好多个博客的链接&#xff0c;终于是试了一个&#xff1a; http://mirrors.ustc.edu.cn/qtproject/online/qtsdkrepository/windows_x86/root/qt/ 哪里放这个链接就不说了&#xff0c;可以自己去找其他博客&#xff0c;我用其他博客的链接不行&#xff0c;但这个链接试用。…

国庆假期将至,拓世AI智能规划行程,让您轻松游遍全球热门景点!

卡夫卡曾说&#xff1a;“人不是活几年、几月、几天、几小时&#xff0c;而只活几个瞬间。” 亲赴一场与美景的邂逅&#xff0c;便是去找寻人生里的瞬间之美。转眼已是九月&#xff0c;正是人间好时节&#xff0c;挥别工作和生活的烦闷&#xff0c;奔向辽阔的天地中。即将到来…

基于SSM+Vue的“魅力”繁峙宣传网站

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用Vue技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

基于图像形态学处理和边缘提取算法的路面裂痕检测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 [Rr,Cc] size(Image1);% 获取 Image1 矩阵的大小&#xff08;行数和列数&#xff09; % 创…

ubuntu+.net6+docker 应用部署教程

先期工作 1、本地首先安装 Docker Desktop 2、本地装linux in windows 3、生成镜像 后期工作 1、云服务器部署 生成镜像方法 1、生成Dockerfile配置文件 开发工具visual studio 2022 如果项目已经存在&#xff0c;可以选中项目&#xff0c;右键点击->选择添加Docker…

3D Web轻量化引擎HOOPS:轻松解决OSGB模型复杂性与性能挑战!

在当今的数字时代&#xff0c;三维模型的创建和展示对于众多行业都至关重要。无论是用于游戏开发、虚拟现实体验、建筑设计还是工程仿真&#xff0c;高质量的3D模型都能够提供更真实的视觉效果和更精确的数据表示。 然而&#xff0c;随着模型的复杂性增加&#xff0c;其数据量…

【数据库系统概论】数据库的四个基本概念:数据、数据库、数据库管理系统和数据库系统

数据&#xff08;data&#xff09;数据库&#xff08;DataBase, DB&#xff09;数据库管理系统&#xff08;DataBase Management System, DBMS&#xff09;数据库系统&#xff08;DataBase System, DBS&#xff09;感谢 &#x1f496; 数据&#xff08;data&#xff09; 定义&…