时间:2021-05-19
CNA文件加解密数据算法
.版本 2.支持库 spec.支持库 iext.程序集 窗口程序集_启动窗口.子程序 __启动窗口_创建完毕.局部变量 code, 字节集, , , 加密密码.局部变量 test, 字节集, , , 要加密码的数据字节集.局部变量 i, 整数型, , , 查看反馈信息' 简单例子test = 到字节集 (“aaaaaaa aaa.*#(中。329}@#¥”)code = 到字节集 (“中。有 3a#”)CNA数据 (test, code, 1)调试输出 (到文本 (test))CNA数据 (test, code, )调试输出 (到文本 (test))' 直接用一个文件进行加解密测试。功能完整的。.子程序 CNA数据, 整数型, , 返回数1表示加密完成,返回0表示解密完成,返回10表示加密或解密码失败.参数 数据集, 字节集, 可空, 要加密的数据集.参数 密码集, 字节集, 可空, 要加密的密码集.参数 方式, 整数型, 可空, 1是加密,0或省略是解密.局部变量 j, 整数型, , , 计次变量.局部变量 i, 整数型, , , 密码集长度.局部变量 k, 整数型, , , 数据集长度.局部变量 lk, 整数型, , , 计算对换对换位置变量.局部变量 t, 整数型, , , 计算对换对换位置变量.局部变量 对换位置组, 整数型, , "0", 存放8个位置数据.局部变量 临时变量, 字节集, , , 临时存放变量.局部变量 密码叠加量, 整数型, , , 密码叠加变量.局部变量 随机数, 整数型, , , 随机变量.局部变量 随机变量集, 字节集, , , 随机变量字节集.局部变量 单个对换位置, 整数型, , , 存放单个对换位置' 限制只加密大于大于或等于10字节以上长度的文件,密码可以和文件一样长,如果比文件长,那多出部分只能累加到密码叠加量里,不能在数据集加密中进行混合' 小于10字节的文件可自行调整参数和算法.如果真 (方式 = 1 且 取字节集长度 (数据集) ≥ 10 且 取字节集长度 (密码集) ≥ 1) ' >>>>>>>>>>>>>加密开始 ' ----------------------------------(1)计算密码叠加量 j = 取字节集长度 (密码集) .计次循环首 (j, i) 密码叠加量 = 密码集 [i] + 密码叠加量 + i × 15 .计次循环尾 () lk = 密码叠加量 ' ---用于计算对换位置时使用 ' ----------------------------------(2)引入固定8位数随机变量 置随机数种子 () 随机数 = 取随机数 (10000000, 98999999) ' ----------------------------------(3)开始数据集加密 j = 取字节集长度 (密码集) .计次循环首 (取字节集长度 (数据集), i) ' ------开始加密数据 数据集 [i] = 数据集 [i] + 密码集 [j] + 密码叠加量 + 随机数 j = j - 1 .如果真 (j = 0) j = 取字节集长度 (密码集) .如果真结束 .计次循环尾 () ' ----------------------------------(4)开始把随机数转换随机变量集加密,再合并到数据集中 随机数 = 随机数 + 密码叠加量 ' ------第一次简单混合加密 随机变量集 = 到字节集 (到文本 (随机数)) j = 取字节集长度 (密码集) .计次循环首 (取字节集长度 (随机变量集), i) ' ------开始第二次加密随机变量集 随机变量集 [i] = 随机变量集 [i] + 密码集 [j] + 密码叠加量 j = j - 1 .如果真 (j = 0) j = 取字节集长度 (密码集) .如果真结束 .计次循环尾 () 数据集 = 数据集 + 随机变量集 ' ------数据集和随机变量集合并 ' ----------------------------------(5)通过对数据集长度和密码叠加变量的比例算法求出对换位置 t = 取字节集长度 (数据集) .计次循环首 (8, i) ' ------先通过和密码叠加变量计算出对应位置 加入成员 (对换位置组, t × lk ÷ (lk + t)) t = t - 1.69 lk = lk × 0.459 .计次循环尾 () ' ----------------------------------(6)开始对换随机变量集在数据集里的位置 k = 取字节集长度 (数据集) 临时变量 = 取空白字节集 (1) .计次循环首 (8, i) ' ------ 开始对换 单个对换位置 = 对换位置组 [i] 临时变量 [1] = 数据集 [单个对换位置] 数据集 [单个对换位置] = 数据集 [k] 数据集 [k] = 临时变量 [1] k = k - 1 .计次循环尾 () 返回 (1).如果真结束.如果真 (方式 = 0 且 取字节集长度 (数据集) ≥ 10 且 取字节集长度 (密码集) ≥ 1) ' --------------------解密 ' ----------------------------------(1)计算密码叠加量,和加密部分(1)一样 j = 取字节集长度 (密码集) .计次循环首 (j, i) 密码叠加量 = 密码集 [i] + 密码叠加量 + i × 15 .计次循环尾 () lk = 密码叠加量 ' ---用于计算对换位置时使用 ' ----------------------------------(2)通过对数据集长度和密码叠加变量的比例算法求出对换位置,和加密码部分(5)一样 t = 取字节集长度 (数据集) .计次循环首 (8, i) 加入成员 (对换位置组, t × lk ÷ (lk + t)) t = t - 1.69 lk = lk × 0.459 .计次循环尾 () ' ----------------------------------(3)开始对换随机变量集在数据集里的位置,并把数据集和随机变量集切分出来,对换位置和加密部分(6)略有不同 k = 取字节集长度 (数据集) - 7 ' ------ 开始反向对换 临时变量 = 取空白字节集 (1) .计次循环首 (8, i) 单个对换位置 = 对换位置组 [9 - i] ' ------ 开始反向对换 临时变量 [1] = 数据集 [单个对换位置] 数据集 [单个对换位置] = 数据集 [k] 数据集 [k] = 临时变量 [1] k = k + 1 .计次循环尾 () k = 取字节集长度 (数据集) 随机变量集 = 取字节集右边 (数据集, 8) ' ------ 分割出随机变量集 数据集 = 取字节集中间 (数据集, 1, k - 8) ' ------ 分割出数据集 ' ----------------------------------(4)开始解密出随机数,和加密部分(4)取反向操作 j = 取字节集长度 (密码集) .计次循环首 (取字节集长度 (随机变量集), i) 随机变量集 [i] = 随机变量集 [i] - 密码集 [j] - 密码叠加量 j = j - 1 .如果真 (j = 0) j = 取字节集长度 (密码集) .如果真结束 .计次循环尾 () 随机数 = 到数值 (到文本 (随机变量集)) 随机数 = 随机数 - 密码叠加量 ' ----------------------------------(5)开始解密数据集,和加密部分(3)取反向操作 j = 取字节集长度 (密码集) .计次循环首 (取字节集长度 (数据集), i) 数据集 [i] = 数据集 [i] - 密码集 [j] - 密码叠加量 - 随机数 j = j - 1 .如果真 (j = 0) j = 取字节集长度 (密码集) .如果真结束 .计次循环尾 () 返回 (0).如果真结束返回 (10).子程序 _打开文件加密_被单击.局部变量 file1, 整数型, , , 要加密的文件号.局部变量 file2, 整数型, , , 加密后新建的文件号.局部变量 code, 字节集, , , 要加密码的密码.局部变量 exc, 文本型, , "0", 取文件名格式用.局部变量 文件长度, 长整数型, , , 要加密的文件大小.局部变量 循环次数, 整数型, , , 加密循环次数.局部变量 FSO, 对象, , , 用于读取文件属性信息.局部变量 GetFile, 对象, , , 用于读取文件属性信息.局部变量 temp, 字节集, , , 临时存放字节集.局部变量 i, 整数型, , , 提示加密进度用' 加密时是以80万计/次读入数据的,每次循环加密后的文件都会多出8字节的随机密匙,所以解密时要以80.008万/次读入数据。code = 到字节集 (密码编辑框.内容).如果真 (通用对话框1.打开 ()) file1 = 打开文件 (通用对话框1.文件名, #读写, ) FSO.创建 (“Scripting.FileSystemObject”, ) GetFile = FSO.对象型方法 (“GetFile”, 通用对话框1.文件名) 文件长度 = GetFile.读数值属性 (“Size”, ) exc = 分割文本 (通用对话框1.文件名, “\”, ) file2 = 打开文件 (取当前目录 () + “\CNA+” + exc [取数组成员数 (exc)], #改写, ) 状态条1.置文本 (0, “状态:正在加密..”) 状态条1.置文本 (1, “文件:” + 到文本 (exc [取数组成员数 (exc)])) 循环次数 = 到整数 (文件长度 \ 800000) + 1 .计次循环首 (循环次数, i) temp = 读入字节集 (file1, 800000) CNA数据 (temp, code, 1) 写出字节集 (file2, temp) 状态条1.置文本 (2, “进度:” + 到文本 (取整 (i ÷ 循环次数 × 100)) + “%”) ' -----进度显示以百分比方式显现 .计次循环尾 () 状态条1.置文本 (0, “状态:加密完成”) 关闭文件 (file2) 关闭文件 (file1).如果真结束.子程序 _打开文件解密_被单击.局部变量 file1, 整数型, , , 要加密的文件号.局部变量 file2, 整数型, , , 加密后新建的文件号.局部变量 code, 字节集, , , 要加密码的密码.局部变量 exc, 文本型, , "0", 取文件名格式用.局部变量 文件长度, 长整数型, , , 要加密的文件大小.局部变量 循环次数, 整数型, , , 解密循环次数.局部变量 FSO, 对象, , , 用于读取文件属性信息.局部变量 GetFile, 对象, , , 用于读取文件属性信息.局部变量 temp, 字节集, , , 临时存放字节集.局部变量 i, 整数型, , , 提示加密进度用' 注意: 加密时是以80万计/次读入数据的,每次循环加密后的文件都会多出8字节的随机密匙,所以解密时要以80.008万/次读入数据。code = 到字节集 (密码编辑框.内容).如果真 (通用对话框1.打开 ()) file1 = 打开文件 (通用对话框1.文件名, #读写, ) FSO.创建 (“Scripting.FileSystemObject”, ) GetFile = FSO.对象型方法 (“GetFile”, 通用对话框1.文件名) 文件长度 = GetFile.读数值属性 (“Size”, ) exc = 分割文本 (通用对话框1.文件名, “\”, ) file2 = 打开文件 (取当前目录 () + “\CNA-” + exc [取数组成员数 (exc)], #改写, ) 状态条1.置文本 (0, “状态:正在解密..”) 状态条1.置文本 (1, “文件:” + 到文本 (exc [取数组成员数 (exc)])) 循环次数 = 到整数 (文件长度 \ 800008) + 1 ' 注意要多出8字节 .计次循环首 (循环次数, i) temp = 读入字节集 (file1, 800008) ' 看文件大小读入多少字节,如果文件非常大,则可以通过移动文件指针方式分段进行加密 CNA数据 (temp, code, ) 写出字节集 (file2, temp) 状态条1.置文本 (2, “进度:” + 到文本 (取整 (i ÷ 循环次数 × 100)) + “%”) ' -----进度显示以百分比方式显现 .计次循环尾 () 状态条1.置文本 (0, “状态:解密完成”) 关闭文件 (file1) 关闭文件 (file2).如果真结束运行结果:
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例为大家分享了C语言实现文件加密解密功能的具体代码,供大家参考,具体内容如下使用命令提示符,实现任何文件的加密和解密功能。代码如下://#define_C
本文实例为大家分享了python实现AES加密和解密的具体代码,供大家参考,具体内容如下参考:python实现AES加密和解密AES加密算法是一种对称加密算法,
现在就为大家介绍一种基于因子分解的RSA算法,这种加密算法有两种实现形式:1、公钥加密,私钥解密;2、私钥加密,公钥解密。下面就为大家分析一下实现代码,相对于D
收录了一些比较经典的PHP加密解密函数代码,分享给大家。加密解密原理一般都是通过一定的加密解密算法,将密钥加入到算法中,最终得到加密解密结果。?12345678
易语言加密文件夹源码例程程序结合易语言扩展界面支持库和操作系统界面功能支持库,实现文件夹的加密。1、打开易语言软件2、创建一个像我一样的窗口当然也可以自己设计一