打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Crypto++库在VS 2005 的安装、测试

来源:http://www.cnblogs.com/lit10050528/p/4081658.html
标签:Crypto++,VC 2015,下载,安装,测试
收藏:株野
作者:冷冰若水
日期:2017年05月18日 08:46:37

项目中需要使用到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 * 8 << endl;

    cout << "Min Key length: " << AES::MIN_KEYLENGTH * 8 << endl;

    cout << "Max key Lenght: " << AES::MAX_KEYLENGTH * 8 << endl;

    // AES中只包含一些固定的数据,而加密解密的功能有AESEncryption和AESDecryption完成

    AESEncryption aesEncryptor; // 加密器

    unsigned char aesKey[AES::DEFAULT_KEYLENGTH]; // 密钥

    unsigned char inBlock[AES::BLOCKSIZE] = "123456789"; // 要解密的数据块

    unsigned char outBlock[AES::BLOCKSIZE]; // 加密后的密文

    unsigned char xorBlock[AES::BLOCKSIZE]; // 必须为全零

    memset(xorBlock, 0, AES::BLOCKSIZE);

    aesEncryptor.SetKey(aesKey, AES::DEFAULT_KEYLENGTH); // 设置加密密钥

    aesEncryptor.ProcessAndXorBlock(inBlock, xorBlock, outBlock);

    // 以十六进制显示加密后的数据 

    for (int i = 0; i < 16; 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 = 0; i < 16; i++)

    {

        cout << plainText[i];

    }

    cout << endl;

    return 0;

}

因为项目中选择使用对称加密算法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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Crypto 入门学习笔记(DES、AES、RSA、SHA
使用openssl中的加密函数AES、RC4、RSA对文件加密的一个例子
迅雷协议分析
openssl aes-256 cfb128使用
178 f0603
unsigned char 与 char
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服