Crypto++ 5.6.5开源加解密软件的VS2015编译及使用

简介: Crypto++ 5.6.5开源加解密软件的VS2015编译及使用

Crypto++是一个开源的C++加密算法库,它包括密码、消息认证码,单向散列函数,公钥密码机制,关键协议方案,缩小压缩等加密算法。


https://www.cryptopp.com/index.html


https://github.com/weidai11/cryptopp


https://sourceforge.net/projects/cryptopp/files/cryptopp/  -- 请下载5.6.5版本


https://www.cryptopp.com/wiki/HMAC,里面有SHA256算法的使用案例。




1、使用VS2015打开cryptest.sln工程文件,打开工程后可以看到四个项目,分别是


cryptdll,crypttest,cryptlib和dlltest。


2、修改MSVC Runtime Library -- 这个步骤很重要,否则将来库无法使用!


Crypto++库支持多线程,上述四个工程,默认的多线程运行时库都是静态版本的,即“MT”或“MTd”,我们需要将它们修改为“MD”或“MDd”。其中MD对应release版本,MDd对应debug版本。


VS2015主界面,解决方案,右键菜单,分别进入工程属性,配置属性,C/C++,代码生成,运行库。


如果是debug,就选择MDd;如果是release就选择MD。


3、我们F7编译,默认只编译cryptlib和crypttest这两个项目即可。编译cryptdll是会报错,暂时没去查它是为什么,也用不上它。 编译后,会生成一系列文件夹和文件,我们要的结果文件是“Win32->Output->debug和release的cryptlib.lib”。两个文件都很大,大几十MB。


4、整理结果文件


(1)新建文件夹include_crypto,把5.6.6源码文件夹所有的.h文件拷贝进入


(2)新建文件夹lib_crypto,把5.6.6源码编译结果debug和release的.lib文件分别拷入


5、新建test测试工程,验证。记得附加包含目录../include_crypto

// cryptotest.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <cryptlib.h>
#include <files.h>
#include <hex.h>
#include <sha.h>
#include <hmac.h>
using namespace CryptoPP;
#include <string>
#include <iostream>
#ifdef _DEBUG  
#pragma comment(lib,"../lib_crypto/debug/cryptlib.lib")
#else  
#pragma comment(lib,"../lib_crypto/release/cryptlib.lib")
#endif  
int main(int argc, char* argv[])
{
  const byte m[] = {
  0x5,0x8,0xC,0xE,0x1,0xE,0x6,0x0,0x1,0x1,
  0x1,0x1,0x1,0x1,0x1,0x1,0x6,0x4,0x6,0x1,
  0x7,0x4,0x6,0x1,0x0,0x0,0x0,0x0
  };
  const byte k[] = {
  0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,
  0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,
  0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,
  0x1,0x1
  };
  HexEncoder hex(new FileSink(std::cout));
  HMAC<SHA1> hmac(k, sizeof(k));
  hmac.Update(m, sizeof(m));
  byte d[HMAC<SHA1>::DIGESTSIZE];
  hmac.Final(d);
  std::cout << "Message: ";
  hex.Put(m, sizeof(m));
  hex.MessageEnd();
  std::cout << std::endl;
  std::cout << "Digest: ";
  hex.Put(d, sizeof(d));
  hex.MessageEnd();
  std::cout << std::endl;
  return 0;
}





完整的工程源码和5.6.6编译完成的库文件下载:


https://download.csdn.net/download/libaineu2004/10319974




---


参考文章


https://blog.csdn.net/sagittarius_warrior/article/details/53408803


https://blog.csdn.net/sagittarius_warrior/article/details/53405217


相关文章
|
1月前
|
算法 安全 数据安全/隐私保护
Crypto++库支持多种加密算法
【10月更文挑战第29天】Crypto++库支持多种加密算法
71 4
|
16天前
|
存储 Go PHP
Go语言中的加解密利器:go-crypto库全解析
在软件开发中,数据安全和隐私保护至关重要。`go-crypto` 是一个专为 Golang 设计的加密解密工具库,支持 AES 和 RSA 等加密算法,帮助开发者轻松实现数据的加密和解密,保障数据传输和存储的安全性。本文将详细介绍 `go-crypto` 的安装、特性及应用实例。
42 0
|
数据安全/隐私保护 C++ 开发工具
Windows10 VS2017 C++使用crypto++库加密解密(AES)
版权声明:本文可能为博主原创文章,若标明出处可随便转载。 https://blog.csdn.net/Jailman/article/details/85262234 参考文章:https://blog.
5631 0
|
7月前
|
安全 数据安全/隐私保护
如何使用GPG工具加密和解密文件?
如何使用GPG工具加密和解密文件?
438 0
|
7月前
|
Shell 数据安全/隐私保护
加密解密工具
加密解密工具
176 1
|
7月前
|
存储 算法 搜索推荐
保护数据隐私:深入探索Golang中的SM4加密解密算法
保护数据隐私:深入探索Golang中的SM4加密解密算法
191 0
|
安全 数据安全/隐私保护
一分钟教会你如何使用Crypto模块RSA非对称加密,把重要的数据进行加密
随着互联网的迅速发展,信息安全变得尤为重要。数据加密是一个必不可少的环节。有时候,我们一不留神,可能数据就被人窃听到。今天跟大家分享一个数据加密的小案例。
265 0
|
算法 Java 数据安全/隐私保护
最新版-Python和Java实现Aes相互加解密
最新版-Python和Java实现Aes相互加解密
292 0
|
JavaScript 前端开发 数据安全/隐私保护
js前端使用AES加解密及在线解密工具验证
js前端使用AES加解密及在线解密工具验证
749 0
js前端使用AES加解密及在线解密工具验证
|
数据安全/隐私保护 C语言 C++
【C 语言】文件操作 ( 文件加密解密 | 使用第三方 DES 加密解密库 | 头文件导入 | 兼容 C++ 语言 | 加密解密函数说明 )
【C 语言】文件操作 ( 文件加密解密 | 使用第三方 DES 加密解密库 | 头文件导入 | 兼容 C++ 语言 | 加密解密函数说明 )
544 0