DES,2DES,3DES 加密算法支持库
加密模式CBC,填充模式PKCS5(兼容 PKCS7 ),如果与其他编程语言互通要保持一致
各编程语言兼容的DES兼容写法参考](http://bbs.aardio.com/forum.php?mod=viewthread&tid=13148)
演示代码:
import crypt.des;
var des = crypt.des();
des.setPassword("abcd12" )
//加密
var sstr = des.encrypt("测试字符串");
//解密
var str = des.decrypt(sstr);
返回 DES 加密容器。
支持 DES,2DES,3DES 加密(根据密钥长度自动选择)。
可选使用一个字符串参数指定密钥向量(ECB 模式忽略向量)。
如果要与其他编程语言有相同加解密结果,建议不要设置该参数
分配加解密需要用到的 buffer。
分配加解密需要用到的 buffer。
如果不手动分配,程序将会自动按需分配 buffer。
参数 @2 可选,可用对象的blockSize属性指定默认块大小。
加密填充的块大小,默认为 8
加解密时暂存输入输出数据的缓冲区。
只能通过调用 allocBuffer 函数分配此缓冲区。
或者由加解密函数自动分配此缓冲区。
如果未分配缓冲区,或缓冲区大小不够。
加解密时会重新调用 allocBuffer 函数分配到合适大小。
一般不应直接访问此属性。
解密数据
参数 @1 指定字符串或 buffer。
除第一个参数以外,其他参数都是可选参数。
分块解密时,参数 @2 必须为 flase 且参数 @1 的长度必须是块大小的倍数。
成功返回解密文本,失败返回空,
可使用..lasterr()函数获取错误信息
参数 @1 指定 buffer 或字符串。
如果参数 @2 指定的数值小于缓冲区据总长度,解密结束。
可使用 -1 表示解密结束,且输入数据大小等于缓冲区大小。
其他参数可忽略不用管。
成功返回存放解密结果的缓冲区,返回值 2 为解密长度。
需要分块解密的算法,例如 RSA 算法返回的解密结果为字符串。
失败返回 null, 错误信息,错误代码。
用法可参考 decryptFile 函数源码。
解密文件
参数 @1 指定要解密的文件。参数 @2 指定要保存解密结果的文件。
文件参数都可以指定文件路径、文件对象(兼容 io.file,fsys.file,fsys.stream)。
可选用参数 @3 指定分块加密的字节长度,默认为 1MB。
指定字节长度时会自动调整到对齐块大小,参数不需要考虑对齐。
可选指定进度回调函数,回调参数 @1,@2 分别为输入文件总长度、已读取长度。
其他调用参数(哈希对象,选项)一般不必指定。
函数执行成功返回 true,失败返回 null,错误信息。
加密数据
参数 @1 指定字符串或 buffer。
除第一个参数以外,其他参数都是可选参数。
分块加密时,参数 @2 必须为 flase 且参数 @1 的长度必须是块大小的倍数。
成功返回加密文本,失败返回空,
可使用..lasterr()函数获取错误信息
参数 @1 指定 buffer 或字符串。
如果参数 @2 指定的数值小于缓冲区据总长度,加密结束。
可使用 -1 表示解密结束,且输入数据大小等于缓冲区大小。
其他参数可忽略不用管。
成功返回存放加密结果的缓冲区,返回值 2 为解密长度。
需要分块解密的算法,例如 RSA 算法返回的解密结果为字符串。
失败返回 null, 错误信息,错误代码。
用法可参考 encryptFile 函数源码。
加密文件
参数 @1 指定要加密的文件。参数 @2 指定要保存加密结果的文件。
文件参数都可以指定文件路径、文件对象(兼容 io.file,fsys.file,fsys.stream)。
可选用参数 @3 指定分块加密的字节长度,默认为 1MB。
指定字节长度时会自动调整到对齐块大小,参数不需要考虑对齐。
可选指定进度回调函数,回调参数 @1,@2 分别为输入文件总长度、已读取长度。
其他调用参数(哈希对象,选项)一般不必指定。
函数执行成功返回 true,失败返回 null,错误信息。
检测是否已设置密钥
设置初始化向量,参数 @2 可选。
成功返回true。
ECB 模式忽略向量(IV),不需要指定。
设置加密参数
数据值可以是结构体,字符串,或 buffer 对象,
如果数据值一个数值参数,则转换为表示32位整型数值地址的结构体指针
成功返回true,失败请使用 ..lasterr()获取错误信息
设置为 ECB 加密模式。
ECB 模式忽略向量(IV)。
成功返回 true,失败请使用 ..lasterr()获取错误信息
设置加密填充方式
成功返回true,失败请使用 ..lasterr()获取错误信息
设置密钥,根据密钥长度自动选择算法。
如果遇到密钥长度不一致的情况,直接截断就可以。
例如 DES 最长 8 字节密钥,如果遇到 32 字节密钥一般只要
调用 string.left 取最前面 8 字节就可以。
密钥使用补 0 方式自动对齐。
密钥长度小于等于 8 字节时使用 DES 加密
密钥长度小于等于 16 字节时使用 2DES 加密
密钥长度小于等于 24 字节时使用 3DES 加密,
超过 24 字节使用使用MD5算法创建转换为24位密钥,
参数 @2 不需要指定