使用botan库进行AES128加密

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;
}



posted @ 2011-09-22 15:01  Ethan.Tang  阅读(4892)  评论(1编辑  收藏  举报