最后更新:2013-03-30 版本:1.3.2.0330
crypto - 用强加密算法加、解密指定文件集。 - 使用散列或校验和算法产生、检查指定文件集的完整性。
|
2013-03-30 (Ver 1.3.2.0330)
2010-05-21 (Ver 1.3.1.0521)
2007-01-28 (Ver 1.2.0.127)
|
LZO算法简介 LZO算法是非常著名的高效无损压缩算法,由于该算法稳定、出色的表现,被广泛用于各个领域,包括:美国最新的“机遇”号和“勇气”号火星探测器;著名的UPX可执行文件压缩工具等等。 LZO算法的工作效率十分惊人,其压缩时仅需64KB工作空间,解压缩时实现“原地解压”完全不需要任何额外工作空间。在一台内存带宽(memcpy())为 60MB/S 的Pentium 133上,LZO的解压和压缩速度分别达到 20MB/S 和 5MB/S 在压缩率近似的前提下,比 zip、rar 等其它著名压缩算法快很多倍,是实时无损压缩的首选算法。 关于效率 众所周知,强加密算法之所以称之为强加密,刨去所有数学和理论上的东西以外,一个很重要的地方就是它的算法复杂度必须够高。有很多经典攻击方式是跟算法的复杂度直接相关的(这里假设算法本身没有其它缺陷)。 另一个与密码编码学相关的知识:对于给定算法和密钥,要加密的明文越短(可供敌手分析的信息量越少)它就越健壮。 根据以上两条,使用一个接近飞速的压缩算法在加/解密开始前高效地压缩数据,当然是事倍功半的好办法啦。 虽然 lzo 算法这么好,仍然需要显式使用 /lzo 参数才会被启用。这么设计的理由是,本工具的典型用例应当是对已经压缩打包过的文件做加密的,所以默认就开启 lzo 通常有点画蛇添足之嫌。 |
lz4 是一款新兴的实时数据压缩算法。 与老牌的 lzo 算法相比,在压缩率基本相当的前提下,lz4
提供了更优的执行效率,具体的测试如下:
以上测试版本为 lz4 r62 vs. lzo 2.06。与此同时,lz4 还提供了比 lzo 更为宽松的许可证。 |
对于一个足够健壮的算法产生的密文,攻破的唯一方式就是暴力破解。而暴力破解中效率最高也是最常用的方式就是字典攻击。 密钥变换就是利用散列算法的单向性原理,将用户输入的密码经过若干次迭代求散列后再作为密钥使用。这样就可以成几何级数地降低字典攻击的效率。 例如,用户输入的密码为:“password”,密钥变换算法在使用该密码前可以求它的sha散列值(记为结果1),再对结果1求一次sha散列值(结果2)……如此迭代求值10000次后再使用该值(结果10000)作为真正的密钥加密数据。这样,一个使用字典攻击的敌手在尝试字典中的每一个密码时,都必须先对它做10000次sha变换。当迭代次数足够多时,这种方法可以极大地增加字典攻击的难度。 crypto默认使用5000次迭代的sha384算法。对于加密强度要求较高的用户,建议只要使用50万次以上的迭代(使用参数“/iter=500000”)。并且不要使用sha以外的其它散列算法(sha是迄今为止唯一被证明满足密码编码学要求的优质散列算法)。 |
支持的加密算法和可接受的密钥长度:
■注意■ 以现代密码编码学标准来衡量,密钥长度低于 128bit 的加密是不够安全的。
支持的散列和校验和算法:
|
实际上,加密算法只规定了如何加密一组与密钥等长的明文。在真实应用中,待加密的明文尺寸通常远远超过密钥长度。简单地重复使用相同密钥逐段加密所有数据就是简单的电码本(ECB)模式。 电码本模式最大的问题在于,如果明文中出现了一些相同的分组,那么在密文中也会出现几段重复的密文。对于非常结构化的明文,产生的密文中也可能出现相似的结构。这可能使敌手通过一些分析降低其破译难度,当然,上面说过,事先对明文进行压缩编码可以有效降低风险。不过还有更安全的方法。 为了克服这个问题,大师们又发明了很多种加密模式。例如最经典的CBC模式就是把密钥和上一轮的密文异或后,作为本轮密钥传递给加密算法。这样一来即使明文完全由相同的字符组成,生成的密文也将是完全不同的。 crypto支持以下加密模式:
■注意■ 除非有非常明确的理由,否则请使用默认并且推荐使用的 CTR 模式。并忽略本节剩余的说明文字。 下面对以上各模式进行简单介绍:
|
============================================================================== crypto algorithm utility Ver 1.3.2.0330 by BaiYang / 2006 - 2013 http://baiy.cn ============================================================================== Encrypt / Decrypt files using strong crypto algorithm; And Calculate / Verify file's Hash Value USAGE: crypto |
============================================================================== 密码学算法工具 版本:1.3.2.0330 by BaiYang / 2006 - 2013 http://baiy.cn ============================================================================== 使用强加密算法对文件进行加/解密;计算/验证文件的散列值 用法: crypto <动作> {文件模板(可以有多个)} [选项] ============================================================================== 动作: e - 执行加密 d - 进行解密 h - 计算散列值 v - 验证散列值,这时,{文件模板} 参数用于指定要验证的散列值列表文件 (列表文件的内容就是“h”动作的输出) t - 测试当前计算机上的密钥变换效率 @ - 计算给定的文件模板中,最深级的公共父目录 ============================================================================== Options: -pass: - 指定文件加/解密使用的密码,如果未指定,则屏幕提示等待用户输入。 -ealgm: - 指定加密算法,可以是: AES128 (默认) AES192 AES256 -------------------------------------------------------------- BLOWFISH32 BLOWFISH64 BLOWFISH96 BLOWFISH128 BLOWFISH192 BLOWFISH256 BLOWFISH384 BLOWFISH448 -------------------------------------------------------------- IDEA128 -------------------------------------------------------------- MARS128 MARS192 MARS256 MARS384 MARS448 -------------------------------------------------------------- DES DES-EDE2 DES-EDE3 -------------------------------------------------------------- CAST5-40 CAST5-64 CAST5-96 CAST5-128 CAST6-128 CAST6-160 CAST6-192 CAST6-224 CAST6-256 -------------------------------------------------------------- SAFER_K64 SAFER_K128 SAFER_SK64 SAFER_SK128 -------------------------------------------------------------- TWOFISH32 TWOFISH64 TWOFISH96 TWOFISH128 TWOFISH192 TWOFISH256 -------------------------------------------------------------- SERPENT32 SERPENT64 SERPENT96 SERPENT128 SERPENT192 SERPENT256 ============================================================== SEAL160_LE (最快) SEAL160_BE -------------------------------------------------------------- PANAMA_LE (第二快 ;) PANAMA_BE -------------------------------------------------------------- MARC4_32 MARC4_64 MARC4_96 MARC4_128 MARC4_192 MARC4_256 MARC4_384 MARC4_448 MARC4_512 MARC4_768 MARC4_1024 MARC4_1536 MARC4_2048 -------------------------------------------------------------- SALSA20_128 SALSA20_256 XSALSA20_128 XSALSA20_256 -------------------------------------------------------------- SOSEMANUK_128 SOSEMANUK_192 SOSEMANUK_256 -------------------------------------------------------------- -emode: - 指定加密模式,可以是: CTR (默认) CBC CBC_CTS CFB CFB_FIPS OFB ECB (对稍大的数据而言,使用该模式不够安全!) -halgm: - 指定散列/校验和算法,可以是: CRC32 ADLER32 MD5 (在执行 h 和 v 动作时的默认算法) MD2 SHA1 SHA256 SHA384 (在执行加密时的默认密钥变换算法) SHA512 PANAMA_LE PANAMA_BE Whirlpool TIGER RIPEMD160 RIPEMD320 RIPEMD128 RIPEMD256 SHA3_224 SHA3_256 SHA3_384 SHA3_512 -iter: - 指定在加密时进行多少次迭代式密钥变换。默认为:5000次 -s - 包含子目录。 -to: - 指定加/解密后生成文件的目标目录。对于散列算法,该参数用来指定生成 或验证文件散列列表时使用的根目录。默认值:与源路径相同。 -root: - “-to:”选项的别名,如果与“-to:”选项同时指定,则此选项优先使用。 -calgm: - 指定加密数据时使用的压缩算法,可以是: lz4 zlib gzip bz2 none (默认值: 不对待加密的数据进行压缩) -lz4 - 在开始加密前,先使用 lz4 算法压缩文件内容。与 "-calgm:lz4" 等效。 -logfile: - 记录日志文件。 -loglevel - 指定日志文件的详细程度,可以是: DebugOnly (最详细) Info Warning (默认) Error FatalError Disabled (关闭日志输出) -force - 忽略校验和错误,强制生成目标文件。仅对文件解密有效。 ============================================================================== 使用示例: crypto e doc\*.txt doc\*.doc /s /ealgm:AES256 /lz4 /to:EncryptDir /pass:word crypto d * /s /to:DecryptDir crypto d proj.rar /force crypto h * /s > md5.txt crypto v md5.txt crypto t crypto t /halgm:md5 crypto @ d:\tmp\doc d:\tmp\prj d:\tmp\test |
crypto.rar
(Windows/DOS,DOS 下使用需要 HXDOS 环境支持) crypto_linux_x86.zip (在 Ubuntu 11.04 上测试通过) crypto_linux_x64.zip (在 Ubuntu 11.04 上测试通过) crypto_freebsd_x64.zip(在 FreeBSD 7.0 上测试通过) crypto_netbsd_x86.zip (老版本,未更新:在 NetBSD 5.0.1 上测试通过) crypto_solaris_x86.zip(在 OpenSolaris 2009.06 上测试通过) |