Emule使用的几个开源库介绍 (网上搜集整理)
一、 ID3 库
id3lib是一个开放源码的操纵ID3v1/v1.1和ID3v2标签的软件库。主要是获取 MP3 文件的信息,包括
页眉和ID3标签
二、ZLib库
zlib是 一套通用目的的压缩库 ,即可以对信息进行压缩的一类算法
它通过一种
压缩格式zlib(具体细节看http://www.ietf.org/rfc/rfc1950.txt ),实现数据的压缩。zlib库实现了对这种压缩
文件格式的读取。
其次,如果大家想了解一些具体的细节,可以查阅相关文档,这两个网站
http://gnuwin32.sourceforge.net/gackages/zlib.htm
都有详细的介绍,不过我觉得zlib.h中
注释写得已经很清楚了。
源文档 <http://topic.csdn.net/u/20080515/14/162f215c-1c75-42ae-bdb9-8005a82a4602.html >
三、ResizableLib
这是一个控制对话框大小自动窗放的基类库,即主对话框的大小变了,则在主对话框上建立的子对话框的大小和位置都需要调整,只需这些子对话框建立在Resizable类基础则很多工作就已经完成了。
四、libpng
libpng 库.这些库用于读写png格式的图像文件.
源文档 <http://www.admin999.com/servers/linux/200703/73925.html >
五、cximage
CxImage类库是一个优秀的图像处理类库,完全免费,开源,作者完全公开了源代码,可以进一步学习各种图形编码、解码技术。CxImage库是一个可以用于MFC的C++类,可以用于读取、存储、绘制和转换多种格式的图像文件,比如BMP、JPEG、GIF、PNG、TIFF、MNG、ICO、PCX、TGA、WMF、WBMP、JBG、J2K等。可以实现图像文件的类型转换,也可以实现在内存中的图像数据的类型转换。
CxImage的作者是Davide Pizzolato,他的主页是http://www.xdp.it/ ,提供下载。也可以到开源代码网站codeproject去下载它的源文件,网址是http://www.codeproject.com/ 。
编译CxImage类库有两种方法:一种方法是将cximage.lib与其它图像格式库分开编译,在使用时需要指明所有要使用的图像格式的库德路径;具体过程:单击VC6.0的Build/Batch Build菜单命令,在Project Configurations列表中只选择所有项目的Win32 Release版本,再单击Build按钮即可,编译完成后将每个项目文件夹下的Release文件夹的库文件复制出来使用。另一种方法是将所需使用的图像格式库都包含到cximage.lib中,使用时只需要指明cximage.lib库的路径即可。具体过程:单击VC6.0中Project / Dependencies菜单命令,在Select project to modify下拉列表中选择CxImage项,再在Dependent on the following project(s)列表框中选择需要一起编译的项目。单击Batch Build菜单中,只选择CxImage-Win32 Release项,编译即可。
程序文件中增加写上:
源文档 <http://hi.baidu.com/xiexianyu/blog/item/fa5f2030eb11aa93a9018ec3.html >
六、crypto51
Crypto++库的开发者是Wei Dai,非常好,标准的C++模板,不论是学习还是从应用的角度,都是难得的教材。算是提供一个给大家多学习和交流的机会
Crypto++ 库是一个用 c++ 编写的密码类库,是一个自由软件。 Crypto++™ Library 5.1 于 2003 年 3 月 22 日发布,是目前最高的版本,该版本加入了除了作者 Wei Dai 以外的另外一些作者的代码重新包装成类,类库里主要包含下列的内容:
1 、 用抽象类定义 API 类的继承层次
2 、 高级加密标准 AES ( Advanced Encryption Standard ) Rijndael 和 AES 候选算法: RC6, MARS, Twofish, Serpent, CAST-256
1997 年 4 月 15 日美国国家标准技术研究所 NIST 发起征集高级加密标准 AES 算法的活动,目的是为确定一个安全性能更好的分组密码算法用于取代 DES , AES 的基本要求是比三重 DES 快并且至少与 DES 一样安全 , 分组长度为 128 位 , 密钥长度为 128 位 ,192 位或 256 位 .2001 年 11 月 26 日 ,NIST 正式公布高级加密标准 AES, AES 的安全性能是良好的 , 经过多年来的分析和测试 , 至今没有发现 AES 的明显缺点 , 也没有找到明显的安全漏洞 . AES 能够抵抗目前已知的各种攻击方法的攻击。
3 、 对称分组密码: IDEA, DES, Triple-DES (DES-EDE2 and DES-EDE3), DESX (DES-XEX3), RC2, RC5, Blowfish, Diamond2, TEA, SAFER, 3-WAY, GOST, SHARK, CAST-128, Square, Skipjack 。
分组密码又称为秘密钥密码或对称密码。利用分组密码对明文进行加密时,首先需要对明文进行分组,每组的长度都相同,然后对每组明文分别加密得到等长的密文,分组密码的特点是加密密钥与解密密钥相同。分组密码的安全性应该主要依赖于密钥,而不依赖于对加密算法和解密算法的保密。因此,分组密码的加密和解密算法可以公开。
4 、 一般的密码模式: ECB, CBC, CBC ciphertext stealing (CTS), CFB, OFB, counter mode (CTR) 。
电子密本( ECB ), 密码 分组链接 (CBC) ,输出反馈 (OFB) 和密文反馈 (CFB)
5 、 序列密码: Panama, ARC4, SEAL, WAKE, WAKE-OFB, BlumBlumShub
序列密码可以认为是起源于 20 世纪 20 年代的 Vernam 体系,当 Vernam 体制中的密钥序列是随机的 (0,1) 时,他就是“一次一密“密码体制。 Shannon 已经证明了“一次一密“密码体制在理论上是不可破译的。由于随机的密钥序列产生、存储以及分配等方面存在一定的困难, Vernam 体制在当时并没有得到广泛的应用。随着微电子技术和数学理论的发展与完善,基于伪随机序列的序列密码得到了长足的发展和应用。在序列密码中,加密和解密所用的密钥都是伪随机序列,伪随机序列的产生比较容易并且有比较成熟的数学理论工具,目前,序列密码是 世界各国的军事和外交等领域中使用的主要密码体制之一。
6 、 公钥密码 : RSA, DSA, ElGamal, Nyberg-Rueppel (NR), Rabin, Rabin-Williams (RW), LUC, LUCELG, DLIES (variants of DHAES), ESIGN
在公钥密码体制中加秘密钥和解密密钥是不一样的,加密密钥可以公开传播而不危及密码体制的安全性。
RSA 公钥密码体制的安全性是基于大整数的素分解问题的难解性,
7 、公钥密码系统补丁: PKCS#1 v2.0, OAEP, PSSR, IEEE P1363 EMSA2
8 、密钥协商方案: Diffie-Hellman (DH), Unified Diffie-Hellman (DH2), Menezes-Qu-Vanstone (MQV), LUCDIF, XTR-DH
9 、椭圆曲线密码: ECDSA, ECNR, ECIES, ECDH, ECMQV
9 、 单向 hash 函数:
hash 函数是一种将一种任意长度的消息 (message) 压缩为某一固定长度的消息摘要 (message digest) 的函数。 hash 函数可以用于数字签名和消息的完整性检测。
SHA-1,:
安全 hash 算法 SHA
MD2, MD4, MD5, HAVAL, RIPEMD-160, Tiger, SHA-2 (SHA-256, SHA-384, and SHA-512), Panama
11 、消息认证码 (MAC) : MD5-MAC, HMAC, XOR-MAC, CBC-MAC, DMAC
12 、基于密码结构的 Hash 函数: Luby-Rackoff, MDC
13 、伪随机数发生器 (PRNG): ANSI X9.17 appendix C, PGP's RandPool
14 、 password based key derivation functions : PBKDF1 and PBKDF2 from PKCS #5
15 、压缩和解压算法
16 、大整数和多项式快速精确算法
17 、有限范围内的算法包括 GF(p) 和 GF(2^n)
18 、素数的产生和验证
等等。
crypto51介绍文档 <http://www.kaiyuan8.org/Article/PdCjVskOgkieLCyjxDMO.aspx >