定义
加密:在密码学中,加密是将明文信息隐匿起来,使之在缺少特殊信息时不可读。
加密(encryption)算法:将普通信息(明文,plaintext)转换成难以理解的资料(密文,ciphertext)的过程;解密(decryption)算法则是其相反的过程:由密文转换回明文;加解密包含了这两种算法,一般加密即同时指称加密(encrypt或encipher)与解密(decrypt或decipher)的技术。
加密算法分类
对称加密算法
加解密使用相同的密钥。
速度快。
DES
3DES
AES
TDEA
Blowfish
RC5
IDEA
非对称加密算法
加解密使用不同的密钥。
公钥和私钥。
可以实现签名。
RSA
DSA
ECC
散列算法
不可逆。
MD5
SHA
如何选择
加密库
botan
crypto++
tomcrypt
openssl
MCrypt
Cryptlib
--- new added begin
PolarSSL
yaSSL
GnuPG
--- new added end
这里列出了很多:http://www.homeport.org/~adam/crypto/
Botan
官网
编译
环境:Visual C++ 2008 sp1
1.11.0及之后版本需要支持c++11的编译器。
下载1.10.2源码:http://botan.randombit.net/files/Botan-1.10.2.tgz
解压。
安装python:我安装的python27。
编译:
install之后会在系统盘产生。
产生doxygen文档
需要注意的是Botan的Doxygen是1.5.4版本的,最好就下载doxygen1.5.4版本。(我下载了最新的1.8版本,结果生成文档有错误。)
官网说通过nmake可以,不过无所谓了。
直接调用doxygen就能生成了。
打开这个目录下的index.html即可。
The Amalgamation Build
(混合版本?不知道怎么翻译)
这样产生两个文件。
可以直接编译进我们的工程中。
例子
参考http://botan.randombit.net/firststep.html
使用Botan的关键,理解filters:http://botan.randombit.net/filters.html
base64的编码与解码:
更多例子
参考资料
http://wenku.baidu.com/view/679dd5dad15abe23482f4d1a.html
http://zh.wikipedia.org/wiki/%E5%AF%86%E7%A0%81%E5%AD%A6