botan加密算法库集成了常见的加密及哈希算法,哈希类(hash)如MD5,SHA-1,SHA-256,都是有的,对称加密算法如DES,AES,非对称加密算法如RSA都有支持
botan软件主页:http://botan.randombit.net/
那么就单刀直入吧!
安装:ubuntu下安装botan库很简单,到软件中心里搜libbotan,把一个libbotan和另外一个诸如libbotanxxx-dev的库安装就可以了,其它系统请参阅软件文档。
使用:botan库使用之前,要求必须有一个LibraryInitializer对象,这个可以在你的main函数开头写入(事实上我之前曾经忘记了写这个东西,似乎没有出问题)
使用botan第三方库,那么方法很简单
#include <botan/botan.h>
botan库内所有的类、接口大多是声明在一个叫做Botan的名字空间里,你可以用普通引用的方法,如果要图懒可以直接using namespace Botan;
下面的代码展示如何使用Botan库中的算法进行AES128/CBC对称加密,AES128所需的128位密钥通过MD5获得
说明:
输入依次为 明文(或密文)、密码、操作(有ENCRYPTION和DECRYPTION两种)
输出:明文(或密文),对于解密操作,解密成功时返回明文,解密失败,抛出一个Botan::Decoding_Error类型的异常
string cryptoAES(string input,string passphrase,Cipher_Dir opt) {
HashFunction* hash = get_hash("MD5");
SymmetricKey key = hash->process(passphrase);
SecureVector<byte> raw_iv = hash->process('0'+ passphrase);
InitializationVector iv(raw_iv, 16);
Pipe pipe(get_cipher("AES-128/CBC", key, iv, opt));
pipe.process_msg(input);
string output=pipe.read_all_as_string();
return output;
}