Crypto++库安装、测试
项目中需要使用到C++加密解密库,选择了Crypto++这个开源库,于是先安装并写一个小例子试试
一、下载
网址:http://www.cryptopp.com/#download
二、打开项目
下载后加压缩,并进入目录,打开cryptest.sln文件,打开解决方案,此解决方案是用vs2005建立的
打开解决方案后,会看到有4个项目存在:cryptest、cryptlib、cryptopp、dlltest
我们得到的是Crypto++这个算法库的源码,如果想要在我们的项目中使用它,必须先把它编译成为库
生成项目cryptlib即可得到我们想要的库。
在适当地地方建立一个目录crypto++在内部新建lib和include目录分别存放头文件和生成的库。
三、编写我们的示例程序
首先需要把上一步得到的库和头文件路径添加到我们的示例程序项目中。
示例代码如下:
#include <iostream>
#include "aes.h" #pragma comment(lib, "cryptlib.lib") using namespace std;
using namespace CryptoPP; int main(int argc, char **argv)
{
// AES使用的固定参数是以类AES中定义的ENUM数据类型出现的,而不是成员函数或者变量
// 因此需要用::符号来索引
cout << "AES Parameters: " << endl;
cout << "Algorigthm name: " << AES::StaticAlgorithmName() << endl; // Crypto++库中一般用字节数表示长度,而不是常用的字节数
cout << "Block size: " << AES::BLOCKSIZE * << endl;
cout << "Min Key length: " << AES::MIN_KEYLENGTH * << endl;
cout << "Max key Lenght: " << AES::MAX_KEYLENGTH * << endl; // AES中只包含一些固定的数据,而加密解密的功能有AESEncryption和AESDecryption完成
AESEncryption aesEncryptor; // 加密器 unsigned char aesKey[AES::DEFAULT_KEYLENGTH]; // 密钥
unsigned char inBlock[AES::BLOCKSIZE] = ""; // 要解密的数据块
unsigned char outBlock[AES::BLOCKSIZE]; // 加密后的密文
unsigned char xorBlock[AES::BLOCKSIZE]; // 必须为全零 memset(xorBlock, , AES::BLOCKSIZE); aesEncryptor.SetKey(aesKey, AES::DEFAULT_KEYLENGTH); // 设置加密密钥
aesEncryptor.ProcessAndXorBlock(inBlock, xorBlock, outBlock); // 以十六进制显示加密后的数据
for (int i = ; i < ; i++)
{
cout << hex << (int)outBlock[i] << " ";
}
cout << endl; // 解密
AESDecryption aesDecryptor;
unsigned char plainText[AES::BLOCKSIZE]; aesDecryptor.SetKey(aesKey, AES::DEFAULT_KEYLENGTH);
aesDecryptor.ProcessAndXorBlock(outBlock, xorBlock, plainText); for (int i = ; i < ; i++)
{
cout << plainText[i];
}
cout << endl; return ;
}
因为项目中选择使用对称加密算法aes来实现,所以只写了这一个示例,Crypto++库支持许多种加密解密算法,其他的待以后再来学习。
参考:
http://blog.163.com/kevinlee_2010/blog/static/169820820201162252718894/
http://www.cnblogs.com/linyawen/archive/2013/08/23/3277438.html
http://www.open-open.com/lib/view/open1381633246848.html
http://www.2cto.com/kf/201108/99205.html
Crypto++库安装、测试的更多相关文章
- windows下python3.7安装gmpy2、Crypto 库及rsa
基于python3.7在windows下安装gmpy2 先检查一下是否安装了wheel文件包,在cmd中输入wheel,查看一下,如果没有安装,则输入安装:pip install wheel 如果遇到 ...
- DCMTK3.6.1(MD支持库)安装说明
转载:http://qimo601.iteye.com/blog/1685135 [前言] 最近,因为需要开发DICOM网管模块,必须使用DCMTK的DcmNet模块.但是DCMTK3.6.0在Dcm ...
- Nginx基础知识之————多模块(非覆盖安装、RTMP在线人数实例安装测试)
说明:已经安装好的nginx,需要添加一个未被编译安装的模块,需要怎么弄呢? 具体:这里以安装第三方nginx-rtmp-module和nginx-accesskey-2.0.3模块为例,nginx的 ...
- ubuntu下opencv2.4.9安装测试
ubuntu下opencv2.4.9安装测试 whowhoha@outlook.com 一.依赖包安装 1. build-essential 软件包 sudo apt-get install bui ...
- ubuntu-10.04的测试环境 安装测试 Coreseek开源中文检索引擎-Sphinx中文版
主要参考文档:http://www.coreseek.cn/products-install/install_on_bsd_linux/ 一. 32位版本: coreseek安装需要预装的软件: ap ...
- python 库安装笔记
python 库安装笔记 zoerywzhou@163.com http://www.cnblogs.com/swje/ 作者:Zhouwan 2017-2-22 友情提示 安装python库的过程中 ...
- Python3.5下安装&测试Scrapy
1.引言 Scrapy框架结构清晰,基于twisted的异步架构可以充分利用计算机资源,是做爬虫必备基础,本文将对Scrapy的安装作介绍. 2.安装lxml 2.1 下载地址:https://ww ...
- 【推荐】Nginx基础知识之————多模块(非覆盖安装、RTMP在线人数实例安装测试)
说明:已经安装好的nginx,需要添加一个未被编译安装的模块,需要怎么弄呢? 具体:这里以安装第三方nginx-rtmp-module和nginx-accesskey-2.0.3模块为例,nginx的 ...
- python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑
python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件?当我们点开下载页时, 一般 ...
随机推荐
- iOS开发 Swift开发数独游戏(五)显示游戏答案
要点是设置好Tag就好,通过代码找到并初始化即可. 1: // 2: // ShowAnswerController.swift 3: // sudoku-v02 4: // 5: // ...
- wait和notify函数的规范代码模板
// The standard idiom for calling the wait method in Java synchronized (sharedObject) { while (condi ...
- C#中Math的使用总结
1.向上进位取整.Math.Ceiling 例如: Math.Ceiling(32.6)=33; Math.Ceiling(32.0)=32; 2.向下舍位取整.Math.Floor 例如: Math ...
- 【记录一下】phpMyAdmin 4.5.0-beta1 发布,要求 PHP 5.5
详情点击: [开源中国]http://www.oschina.net/news/65696/phpmyadmin-4-5-0-beta1 [phpMyAdmin]https://www.phpmyad ...
- 扩展gridview轻松实现冻结行和列
在实际的项目中,由于项目的需要,数据量比较大,同时显示栏位也比较多,要做gridview里显示完整,并做到用户体验比较好,这就需要冻结表头和关键列.由于用到的地方比较多,我们可以护展一个gridvie ...
- 通过API获取 Portus+registry docker仓库信息
接口获取docker centos 镜像的 tag 列表脚本 # -*- encoding:utf-8 -*- import requests import json ""&quo ...
- camera主观测试经验分享.ppt33页
http://max.book118.com/html/2016/0802/50061502.shtm http://www.docin.com/p-1408441708.html
- vue第三方ui使用
举个例子. http://git.oschina.net/tianyong/we-vue 假如要在项目中使用这套ui. npm npm install we-vue -S 直接安装就行了.不需要下载源 ...
- SpringBoot修改默认端口号
SpringBoot修改默认端口号 server.port=8088 学习了:https://blog.csdn.net/zknxx/article/details/53433592 java -ja ...
- C# 解决窗体假死的状态
异步调用是CLR为开发者提供的一种重要的编程手段,它也是构建高性能.可伸缩应用程序的关键.在多核CPU越来越普及的今天,异步编程允许使用非常少的线程执行很多操作.我们通常使用异步完成许多计算型.IO型 ...