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

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

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;
}

请添加图片描述

相关文章:

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

crpto 下载按个人喜好下载&#xff0c;我使用了图中框选的8.8.0 Release.解压 安装打开修改以适应本机配置整理至标准库 调用加解密使用 Crypto&#xff08;也称为Crypto Library或Crypto STL&#xff09;是一个C密码学库&#xff0c;它提供了各种密码学算法和安全编程工具&…...

R语言画图

简单记录一下 plot(lad_profile_relative$lad, lad_profile_relative$height, type"l", lwd1.5, xlabexpression(paste("LAD ", "(", m^2, m^-3, ")" )), ylab"Height (m)")X轴数据&#xff0c; Y轴数据 type, 标记类型 lw…...

redis 核心数据结构

一、简述 redis是一个开源的使用C语言编写的一个kv存储系统&#xff0c;是一个速度非常快的非关系远程内存数据库。它支持包括String、List、Set、Zset、hash五种数据结构。 除此之外&#xff0c;通过复制、持久化和客户端分片等特性&#xff0c;用户可以很方便地将redis扩展…...

RabbitMQ消息可靠性(一)-- 生产者消息确认

前言 在项目中&#xff0c;引入了RabbitMQ这一中间件&#xff0c;必然也需要在业务中增加对数据安全性的一层考虑&#xff0c;来保证RabbitMQ消息的可靠性&#xff0c;否则一个个消息丢失可能导致整个业务的数据出现不一致等问题&#xff0c;对系统带来巨大的影响&#xff0c;…...

9 种方法使用 Amazon CodeWhisperer 快速构建应用

Amazon CodeWhisperer 是一款很赞的生成式人工智能编程工具。自从在工作中使用了 CodeWhisperer&#xff0c;我发现不仅代码编译的效率有所提高&#xff0c;应用开发的工作也变得快乐起来。然而&#xff0c;任何生成式 AI 工具的有效学习都需要初学者要有接受新工作方式的心态和…...

性能测试-性能工程落地的4个阶段(21)

性能工程按照不同的内容和目的划分为4个阶段,分别是线下单系统压测分析阶段、线下全链路压测分析阶段、生产只读业务压测及容量评估阶段、生产读写业务全链路压测及容量评估阶段。(也可以理解为一个企业性能测试体系的发展阶段) 线下单系统压测分析阶段 针对单系统的性能…...

小程序 navigateBack 携带参数返回的三种方式(详细)

如果觉着主图好看,点个赞,你早晚也会看到这么好看的景色! 第一种方式 getCurrentPages 获取当前页面栈。数组中第一个元素为首页,最后一个元素为当前页面。不要尝试修改页面栈,会导致路由以及页面状态错误。不要在 App.onLaunch 的时候调用 getCurrentPages(),此时 page …...

通过内网穿透实现远程连接群晖Drive,轻松实现异地访问群晖NAS

文章目录 前言1.群晖Synology Drive套件的安装1.1 安装Synology Drive套件1.2 设置Synology Drive套件1.3 局域网内电脑测试和使用 2.使用cpolar远程访问内网Synology Drive2.1 Cpolar云端设置2.2 Cpolar本地设置2.3 测试和使用 3. 结语 前言 群晖作为专业的数据存储中心&…...

vue3 + vite常用工具

1. plop 1.1 安装 yarn add plop -D1.2 使用 1.2.1 package.json 配置脚本命令 "scripts": {"dev": "vite --mode dev","build": "vue-tsc --noEmit && vite build","serve": "vite preview"…...

Vue框架分享与总结

总结开发中最常用的vue语法&#xff0c;以及对特定语法的理解。vue官网 文章目录 一、创建vue项目1、使用开发工具创建2、使用命令行创建3、vue框架结构4、Vue文件结构 二、Vue 常用模板语法1、v-if、v-show2、v-for3、v-on4、v-bind5、v-model 三、组件通信1、父组件给子组件传…...

声音生成评价指标——使用声音分类模型评价生成声音质量(基于resnetish、VGGish、AlexNet)

文章目录 引言正文数据预处理将wav转成log-mel频谱图进行保存创建dataset类保存数据 模型定义模型训练过程训练代码定义loss为nan从AlexNet到ResNetloss上下剧烈波动——使用学习率衰减策略学习率调整——根据准确率来调整学习率数据处理问题 模型的测试 总结 引言 这篇文章主要…...

HarmonyOS学习路之方舟开发框架—学习ArkTS语言(状态管理 六)

AppStorage&#xff1a;应用全局的UI状态存储 AppStorage是应用全局的UI状态存储&#xff0c;是和应用的进程绑定的&#xff0c;由UI框架在应用程序启动时创建&#xff0c;为应用程序UI状态属性提供中央存储。 和LocalStorage不同的是&#xff0c;LocalStorage是页面级的&…...

SPA首屏加载速度慢

什么是首屏加载 首屏时间&#xff08;First Contentful Paint&#xff09;&#xff0c;指的是浏览器从响应用户输入网址地址&#xff0c;到首屏内容渲染完成的时间&#xff0c;此时整个网页不一定要全部渲染完成&#xff0c;但需要展示当前视窗需要的内容 首屏加载可以说是用…...

JVM执行流程

一、Java为什么是一种跨平台的语言&#xff1f; 通常&#xff0c;我们编写的java源代码会被JDK的编译器编译成字节码文件&#xff0c;再由JVM将字节码文件翻译成计算机读的懂得机器码进行执行&#xff1b;因为不同平台使用的JVM不一样&#xff0c;所以不同的JVM会把相同的字节码…...

laravel 凌晨0点 导出数据库

一、创建导出模型 <?php namespace App\Models;use Illuminate\Support\Facades\DB;class DbBackup {private $table;public function __construct(){$this->table env(DB_DATABASE);}public function run($file ){$file !$file ? public_path($this->t…...

mysql MVCC多版本并发控制

mvcc的概念 mvcc 的实现依赖于&#xff1a; 隐藏字段 行格式&#xff08;row_id,trx_id,roll_ponter&#xff09;UndologRead view innodb 存储引擎的表来说&#xff0c;聚集索引记录中都包含两个必要的隐藏字段&#xff0c;row_id(如果没有聚集索引&#xff0c;才会创建的) …...

new/delete, malloc/free 内存泄漏如何检测

区别&#xff1a; 首先new/delete是运算符&#xff0c;malloc/free是库函数。malloc/free只开辟内存不初始化&#xff1b;new/delete及开辟内存也初始化。抛出异常的方式&#xff1a;new/delete开辟失败使用抛出bad_alloc&#xff1b;malloc/free通过返回值判断。malloc和new区…...

Java开发推荐关注的网站

一、开发者社区 阿里云开发者社区&#xff1a;https://developer.aliyun.com/腾讯云开发者社区&#xff1a;https://cloud.tencent.com/developer 二、开发规范 阿里巴巴Java开发规范 github地址&#xff1a;https://github.com/alibaba/p3c gitcode地址&#xff1a;https:/…...

OpenHarmony社区运营报告(2023年8月)

本月快讯 2023年8月3日&#xff0c;OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09;发布了Beta2版本。OpenHarmony 4.0 Beta2在系统能力、应用框架、分布式通信、媒体功能、安全性等方面进行了全面升级。其中&#xff0c;ArkUI增强了界面组件能力&#x…...

Web学习笔记-React(路由)

笔记内容转载自 AcWing 的 Web 应用课讲义&#xff0c;课程链接&#xff1a;AcWing Web 应用课。 CONTENTS 1. Web分类2. Route组件3. URL中传递参数4. Search Params传递参数5. 重定向6. 嵌套路由 本节内容是如何将页面和 URL 一一对应起来。 1. Web分类 Web 页面可以分为两…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...