由Rinick编写makefile文件,可以在bcc下编译成lib ( rinick@goozo.net )
压缩包下有4个目录
- lib:包含lib文件(及相应源文件供参考)使用前将goozo_crypt.obj和tomcrypt.lib两个文件复制到C++builder的lib目录下
- include:头文件,使用前复制到C++builder的include目录下
- docs(tom):tom提供了加密函数库的pdf说明(想进一步了解功能可以看头文件和源文件中的注释)
- Rinick's ECC:椭圆曲线非对称加密的一个例子和密钥生成器
几个基本功能封装成了独立的函数,使用变得较为简单
#include <goozo_crypt.h>后可使用下列函数
加密:
ltc_eax_encrypt(&aes_desc, "111", "222", pchar, pcharC, 300);
pchar中有300字节内容,加密后保存到pcharC,用户密码是111(AnsiString)
222为系统密码(AnsiString),使得你的aes系统与他人的不同,可以当成是2层密码吧
aes_desc为加密方式,可选的有:
blowfish_desc, rc5_desc, rc6_desc, rc2_desc, saferp_desc, safer_k64_desc, safer_k128_desc, safer_sk64_desc, safer_sk128_desc, rijndael_desc, aes_desc, rijndael_enc_desc, aes_enc_desc, xtea_desc, twofish_desc, des_desc, des3_desc, cast5_desc, noekeon_desc, skipjack_desc, khazad_desc, anubis_desc
没什么特殊需要就用aes吧
解密:
ltc_eax_decrypt(&aes_desc, "111", "222", pcharC, pcharP, 300);
pcharC中有300字节加密内容,解密后保存到
pcharP中
其余参数同上
内存摘要:
AnsiString hash=ltc_hash_mem(&md5_desc, pchar, 800);
pchar中有800字节的内容,将他的MD5摘要保存在hash中
md5_desc为摘要方式,可选的有:
chc_desc, whirlpool_desc, sha512_desc, sha384_desc, sha256_desc, sha224_desc, sha1_desc, md5_desc, md4_desc, md2_desc, tiger_desc, rmd128_desc, rmd160_desc
安全要求高的情况,推荐 sha512或者sha384。一般情况下md5就够了
文件摘要:
AnsiString hash=ltc_hash_file(&md5_desc, "C:\\1.txt");
计算文件C:\1.txt的摘要,存放在hash中
其余参数同上
其他功能请参阅pdf说明和源文件
加密函数库支持以下内容
- 提供一个超大整数库
- 加密
- 支持的加密函数
- Blowfish
- XTEA
- RC5
- RC6
- SAFER+
- Rijndael (aka AES)
- Twofish
- SAFER (K64, SK64, K128, SK128)
- RC2
- DES, 3DES
- CAST5
- Noekeon
- Skipjack
- Anubis (with optional tweak as proposed by the developers)
- Khazad
- Chaining Modes (这部分我不用,不知道怎么翻译)
- Modes come with a start, encrypt/decrypt and set/get IV interfaces.
- Mode supported.
- 单向 Hash 函数
- 支持的hash方式.
- MD2
- MD4
- MD5 (较为常用)
- SHA-1
- SHA-224/256/384/512 (Rinick推荐)
- TIGER-192
- RIPE-MD 128/160
- WHIRLPOOL
- 信息认证
- FIPS-198 HMAC (支持所有hash函数)
- CMAC, 也称OMAC1 (支持所有加密函数)
- PMAC Authentication
- Pelican MAC
- 信息加密认证模式
- EAX Mode
- OCB Mode
- CCM Mode (NIST spec)
- GCM Mode (IEEE spec)
- 伪随机数生成器(部分其他函数要使用)
- Yarrow (based algorithm)
- RC4
- 支持 /dev/random, /dev/urandom 以及 Win32 CSP RNG
- Fortuna
- SOBER-128
- 公钥算法
- RSA (using PKCS #1 v2.1)
- ECC (EC-DSA X9.62 数字签名标准, X9.63 EC-DH,密钥交换标准)
- Rinick添加了一个ECC加密和解密的函数,用于实现软件注册等功能
- DSA (用户可以自己定义算法制造数字签名)
- 支持的其他标准
- PKCS #1 (v2.1 padding)
- PKCS #5
- ASN.1 DER for SEQUENCE, INTEGER, BIT STRING, OCTET STRING, OBJECT IDENTIFIER, IA5 STRING, PRINTABLE STRING, UTCTIME, CHOICE and NULL types.
游客
非常好 2009-11-22