|
此算法与Base64算法类似,但不能完全代替使用,此算法处理一段加密数据后文件长度增加3%左右,可能会低于0%,而Base64则固定增加30%左右。
- .版本 2
- .支持库 YunReg
- .支持库 spec
- .支持库 dp1
- .程序集 程序集1
- .程序集变量 十六进制文本表, 文本型
- .子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码
- 置随机数种子 ()
- _临时子程序 () ' 在初始化代码执行完毕后调用测试代码
- 返回 (0) ' 可以根据您的需要返回任意数值
- .子程序 _临时子程序
- .局部变量 编码前, 字节集
- .局部变量 解码后, 字节集
- .局部变量 文本, 文本型
- .局部变量 编码前长度, 整数型
- .局部变量 编码后长度, 整数型
- .局部变量 base64编码长度, 整数型
- .局部变量 密码文本, 文本型
- .局部变量 计数, 整数型
- ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
- .计次循环首 (100, 计数)
- 密码文本 = “123456” + 到文本 (计数)
- 编码前 = 随机字节集 (10000)
- 文本 = 任意字节集到文本 (编码前, 密码文本)
- 解码后 = 任意文本到字节集 (文本, 密码文本)
- .如果真 (编码前 ≠ 解码后)
- 暂停 ()
- .如果真结束
- 编码前长度 = 取字节集长度 (编码前)
- 编码后长度 = 取文本长度 (文本)
- base64编码长度 = 取文本长度 (BASE64算法编码 (编码前))
- 调试输出 (编码前长度, 编码后长度, base64编码长度)
- 调试输出 (取百分比 (编码后长度, 编码前长度), 取百分比 (base64编码长度, 编码前长度))
- .计次循环尾 ()
- .子程序 取百分比, 双精度小数型
- .参数 当前值, 整数型
- .参数 最大值, 整数型
- 返回 (当前值 ÷ 最大值 × 100)
- .子程序 文本型数组到字节集, 字节集
- .参数 文本型, 文本型, 数组
- .局部变量 字节集, 字节集
- .局部变量 计数, 整数型
- .计次循环首 (取数组成员数 (文本型), 计数)
- 字节集 = 字节集 + 到字节集 (文本型 [计数]) + { 0 }
- .计次循环尾 ()
- 返回 (字节集)
- .子程序 字节集到文本型数组
- .参数 字节集, 字节集
- .参数 文本型数组, 文本型, 参考 数组
- .局部变量 字节集数组, 字节集, , "0"
- .局部变量 数组成员数, 整数型
- .局部变量 数组成员计数, 整数型
- 字节集数组 = 分割字节集 (字节集, { 0 }, )
- 数组成员数 = 取数组成员数 (字节集数组)
- 重定义数组 (文本型数组, 假, 数组成员数)
- .计次循环首 (数组成员数, 数组成员计数)
- 文本型数组 [数组成员计数] = 到文本 (字节集数组 [数组成员计数])
- .计次循环尾 ()
- .子程序 随机字节集, 字节集
- .参数 长度, 整数型
- .局部变量 计数, 整数型
- .局部变量 字节集, 字节集
- 字节集 = 取空白字节集 (长度)
- .计次循环首 (长度, 计数)
- 字节集 [计数] = 取随机数 (0, 255)
- .计次循环尾 ()
- 返回 (字节集)
- .子程序 字节到十六进制, 文本型
- .参数 字节, 字节型
- 返回 (取文本中间 (十六进制文本表, 右移 (字节, 4) + 1, 1) + 取文本中间 (十六进制文本表, 位与 (字节, 15) + 1, 1))
- .子程序 十六进制到字节, 字节型
- .参数 十六进制文本, 文本型
- .局部变量 高字节, 字节型
- .局部变量 低字节, 字节型
- 高字节 = 一位十六进制到字节 (取文本左边 (十六进制文本, 1))
- 低字节 = 一位十六进制到字节 (取文本右边 (十六进制文本, 1))
- 返回 (位或 (低字节, 左移 (高字节, 4)))
- .子程序 一位十六进制到字节, 字节型
- .参数 十六进制文本, 文本型
- .局部变量 文本, 文本型
- .局部变量 计数, 整数型
- .变量循环首 (0, 15, 1, 计数)
- .如果真 (十六进制文本 = 取文本中间 (十六进制文本表, 计数 + 1, 1))
- 返回 (计数)
- .如果真结束
- .变量循环尾 ()
- 暂停 ()
- 结束 ()
- 返回 (255)
- .子程序 整数到十六进制, 文本型
- .参数 整数, 整数型
- .局部变量 字节集, 字节集
- .局部变量 计数, 整数型
- .局部变量 返回值, 文本型
- 字节集 = 到字节集 (整数)
- .变量循环首 (4, 1, -1, 计数)
- 返回值 = 返回值 + 字节到十六进制 (字节集 [计数])
- .变量循环尾 ()
- 返回 (返回值)
- .子程序 十六进制到整数, 整数型
- .参数 十六进制文本, 文本型
- .局部变量 计数, 整数型
- .局部变量 计数2, 整数型
- .局部变量 字节集, 字节集
- 字节集 = 取空白字节集 (4)
- 计数2 = 5
- .变量循环首 (1, 7, 2, 计数)
- 计数2 = 计数2 - 1
- 字节集 [计数2] = 十六进制到字节 (取文本中间 (十六进制文本, 计数, 2))
- .变量循环尾 ()
- 返回 (取字节集数据 (字节集, 3, ))
- .子程序 任意字节集到文本, 文本型, 公开
- .参数 字节集, 字节集
- .参数 密码文本, 文本型, 可空
- .局部变量 文本型数组, 文本型, , "0"
- .局部变量 返回值, 文本型
- .局部变量 成员数, 整数型
- .局部变量 计数, 整数型
- .局部变量 加密压缩后, 字节集
- 加密压缩后 = 加密压缩 (字节集, 密码文本)
- 返回值 = 随机十六进制文本表 ()
- 返回值 = 返回值 + 整数到十六进制 (取字节集长度 (加密压缩后))
- 返回值 = 返回值 + 整数到十六进制 (crc32 (加密压缩后))
- 字节集到文本型数组 (加密压缩后, 文本型数组)
- 成员数 = 取数组成员数 (文本型数组)
- .计次循环首 (成员数, 计数)
- 返回值 = 返回值 + 整数到十六进制 (取文本长度 (文本型数组 [计数])) + 文本型数组 [计数]
- .计次循环尾 ()
- 返回 (返回值)
- .子程序 任意文本到字节集, 字节集, 公开
- .参数 文本, 文本型
- .参数 密码文本, 文本型, 可空
- .局部变量 长度, 整数型
- .局部变量 计数, 整数型
- .局部变量 总长, 整数型
- .局部变量 返回值, 字节集
- .局部变量 字节集长度, 整数型
- .局部变量 字节集CRC, 整数型
- 总长 = 取文本长度 (文本)
- 计数 = 1
- 十六进制文本表 = 取文本中间 (文本, 计数, 16)
- .如果真 (十六进制文本表是否无效 (到字节集 (十六进制文本表)))
- 返回 ({ })
- .如果真结束
- 计数 = 计数 + 16
- 字节集长度 = 十六进制到整数 (取文本中间 (文本, 计数, 8))
- 计数 = 计数 + 8
- 字节集CRC = 十六进制到整数 (取文本中间 (文本, 计数, 8))
- 计数 = 计数 + 8
- .循环判断首 ()
- 长度 = 十六进制到整数 (取文本中间 (文本, 计数, 8))
- 计数 = 计数 + 8
- 返回值 = 返回值 + 到字节集 (取文本中间 (文本, 计数, 长度)) + { 0 }
- 计数 = 计数 + 长度
- .循环判断尾 (计数 < 总长)
- 返回值 = 取字节集左边 (返回值, 字节集长度)
- .如果真 (字节集CRC ≠ crc32 (返回值))
- 返回 ({ })
- .如果真结束
- 返回 (解密解压 (返回值, 密码文本))
- .子程序 随机十六进制文本表, 文本型
- .局部变量 字节集, 字节集
- .局部变量 计数, 整数型
- 字节集 = 取空白字节集 (16)
- .循环判断首 ()
- .计次循环首 (16, 计数)
- 字节集 [计数] = 取随机数 (1, 255)
- .计次循环尾 ()
- .循环判断尾 (十六进制文本表是否无效 (字节集))
- 十六进制文本表 = 到文本 (字节集)
- 返回 (十六进制文本表)
- .子程序 十六进制文本表是否无效, 逻辑型
- .参数 字节集, 字节集
- .局部变量 出现的值, 逻辑型, , "0"
- .局部变量 计数, 整数型
- 重定义数组 (出现的值, 假, 256)
- .计次循环首 (取字节集长度 (字节集), 计数)
- .如果真 (出现的值 [字节集 [计数] + 1] = 真 或 字节集 [计数] = 0)
- 返回 (真)
- .如果真结束
- 出现的值 [字节集 [计数] + 1] = 真
- .计次循环尾 ()
- 返回 (假)
- .子程序 crc32, 整数型
- .参数 data, 字节集
- .局部变量 crcval, 整数型
- .局部变量 len, 整数型
- .局部变量 i, 整数型
- .局部变量 j, 整数型
- .局部变量 table, 整数型, , "256"
- .局部变量 crc, 整数型
- len = 取字节集长度 (data)
- crcval = 4294967295
- .变量循环首 (0, 255, 1, i)
- crc = i
- .变量循环首 (0, 7, 1, )
- .如果 (位与 (crc, 1) ≠ 0)
- crc = 位异或 (位与 (右移 (crc, 1), 2147483647), 3988292384)
- .否则
- crc = 位与 (右移 (crc, 1), 2147483647)
- .如果结束
- .变量循环尾 ()
- table [i + 1] = crc
- .变量循环尾 ()
- .计次循环首 (len, i)
- j = 位异或 (data [i], 位与 (crcval, 255)) + 1
- crcval = 位异或 (位与 (右移 (crcval, 8), 16777215), table [j])
- .计次循环尾 ()
- 返回 (位取反 (crcval))
- .子程序 加密压缩, 字节集
- .参数 字节集, 字节集
- .参数 密码文本, 文本型, 可空
- 返回 (加密数据 (压缩数据 (字节集), 密码文本, 1))
- .子程序 解密解压, 字节集
- .参数 字节集, 字节集
- .参数 密码文本, 文本型, 可空
- 返回 (解压数据 (解密数据 (字节集, 密码文本, 1)))
复制代码
|
评分
-
1
查看全部评分
-
|