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 
#include 
#include 
#include 
#include 
using namespace CryptoPP;

#include 
#include 

#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 hmac(k, sizeof(k));
	hmac.Update(m, sizeof(m));

	byte d[HMAC::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


你可能感兴趣的:(C/C++)