Archive for March 31st, 2007
AES加密算法的简单封装
by Charry
AES加密算法每次对16字节的数据进行加密,而且加密后的密文通常是非ASCII字符,不易于保存和传输, 为了使用方便,我写了个包装类,使得使用AES加密非常简单,并且加密后的密文以它的16进制的形式出现,不再有乱码。
接口为:
BOOL Encrypt(const CString &key, const CString &in, CString &out);
BOOL Decrypt(const CString &key, const CString &in, CString &out);
由于AES是每16字节加密一下,所以如果被加密的明文的长度不是16的整数倍,我们需要在明文的后面补齐,比如用字符“0”。为了记录最后补了多少个“0”,可以把这个数字保存在最终的密文的后面,形如:
“DA7C8E7BF333EE0C612A8E211B139D4D{[]}10″
数字10前面的{[]}是为了查找方便。这个外包类只是我为了自己使用方便而写,其核心部分来自CodeProject:http://www.codeproject.com/cpp/aes.asp ,我只是简化了接口,并添加了UNICODE支持等细节。
点击这里下载代码