项目中需要使用到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++库安装、测试的更多相关文章

  1. windows下python3.7安装gmpy2、Crypto 库及rsa

    基于python3.7在windows下安装gmpy2 先检查一下是否安装了wheel文件包,在cmd中输入wheel,查看一下,如果没有安装,则输入安装:pip install wheel 如果遇到 ...

  2. DCMTK3.6.1(MD支持库)安装说明

    转载:http://qimo601.iteye.com/blog/1685135 [前言] 最近,因为需要开发DICOM网管模块,必须使用DCMTK的DcmNet模块.但是DCMTK3.6.0在Dcm ...

  3. Nginx基础知识之————多模块(非覆盖安装、RTMP在线人数实例安装测试)

    说明:已经安装好的nginx,需要添加一个未被编译安装的模块,需要怎么弄呢? 具体:这里以安装第三方nginx-rtmp-module和nginx-accesskey-2.0.3模块为例,nginx的 ...

  4. ubuntu下opencv2.4.9安装测试

    ubuntu下opencv2.4.9安装测试 whowhoha@outlook.com 一.依赖包安装 1.  build-essential 软件包 sudo apt-get install bui ...

  5. ubuntu-10.04的测试环境 安装测试 Coreseek开源中文检索引擎-Sphinx中文版

    主要参考文档:http://www.coreseek.cn/products-install/install_on_bsd_linux/ 一. 32位版本: coreseek安装需要预装的软件: ap ...

  6. python 库安装笔记

    python 库安装笔记 zoerywzhou@163.com http://www.cnblogs.com/swje/ 作者:Zhouwan 2017-2-22 友情提示 安装python库的过程中 ...

  7. Python3.5下安装&测试Scrapy

    1.引言 Scrapy框架结构清晰,基于twisted的异步架构可以充分利用计算机资源,是做爬虫必备基础,本文将对Scrapy的安装作介绍. 2.安装lxml 2.1  下载地址:https://ww ...

  8. 【推荐】Nginx基础知识之————多模块(非覆盖安装、RTMP在线人数实例安装测试)

    说明:已经安装好的nginx,需要添加一个未被编译安装的模块,需要怎么弄呢? 具体:这里以安装第三方nginx-rtmp-module和nginx-accesskey-2.0.3模块为例,nginx的 ...

  9. python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑

    python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件?当我们点开下载页时, 一般 ...

随机推荐

  1. 通读《STL源码剖析》之后的一点读书笔记

    直接逼入正题. Standard Template Library简称STL.STL可分为容器(containers).迭代器(iterators).空间配置器(allocator).配接器(adap ...

  2. Scala实战高手****第4课:零基础彻底实战Scala控制结构及Spark源码解析

    1.环境搭建 基础环境配置 jdk+idea+maven+scala2.11.以上工具安装配置此处不再赘述. 2.源码导入 官网下载spark源码后解压到合适的项目目录下,打开idea,File-&g ...

  3. Java下String逗号数组和List<String>的互相转换

    说明:很遗憾,组装的时候只能遍历. 方法: public static String listToString(List<String> list){ if(list==null){ re ...

  4. 【译】PHP中的Session及其一些安全措施

    有一点我们必须承认,大多数web应用程序都离不开session的使用.这篇文章将会结合php以及http协议来分析如何建立一个安全的会话管理机制.我们先简单的了解一些http的知识,从而理解该协议的无 ...

  5. 【mybatis】idea中 mybatis的mapper类去找对应的mapper.xml中的方法,使用插件mybatis-plugin

    idea中 mybatis的mapper类去找对应的mapper.xml中的方法,使用插件mybatis-plugin,名字可能叫Free mybatis-plugin 安装上之后,可能需要重启ide ...

  6. java.sql.SQLException: Io 异常: Got minus one from a read call

    博客分类: Oracle   Tomcat服务器下的应用连接Oracle时报错,出现以下异常: java.sql.SQLException: Io 异常: Got minus one from a r ...

  7. SONY 手提 realtek high definition audio driver

    SONY 手提 realtek high definition audio driver: 官方网站下载:http://www.realtek.com.tw/downloads/downloadsVi ...

  8. Centos:mysql的安装和使用:yum方式

    1.安装: 安装客户端 sudo yum install mysql 安装服务器 sudo yum install mysql-server 2.配置:查看配置文件 cat /etc/my.cnf 3 ...

  9. js调试方法

    参考:1.https://developers.google.com/web/tools/chrome-devtools/javascript/ 2.https://developers.google ...

  10. 自己亲自写的两本linux资料,免费下载,pdf文档

    第一本是我写的韩顺平老师解说的linux视频的笔记,该视频原本有21讲.可是我始终没有找到当中的17.18讲.可是其它部分我感觉及记录的还是蛮认真的.该套视频解说的非常基础,因此我的这本笔记也非常基础 ...