精易论坛

标题: 《原创》CNA加解密数据算法完整开源版<效率密度迸进> [打印本页]

作者: cbuy8    时间: 2017-4-24 01:04
标题: 《原创》CNA加解密数据算法完整开源版<效率密度迸进>
本帖最后由 cbuy8 于 2017-4-24 16:02 编辑

花了不少时间写和调试这个,

算法简命名:CNA算法(全数据重写加密)


优点:1.同一密码同一内容,加密N次后的会重复的密文机率为98999999分之一
          (简单说就是基本上不会出现加密后重复的内容)
           2.密码可以是任意长度(当然小于要加密文件长度以内是最好的)任意有效的字符(中英符...等)
           3.可以用一个文件当作密码去加密另一个文件
           4.支持任何格式的文件直接进行CNA加解密


缺点:对只有10个字节以下的文件加密感觉有点......(感觉没必要加密这么小的文件吧,,稍作修改也都可以加密)


电脑配置:14年华硕笔记本,i5 4G 500G(机械硬盘) 系统:win10(不是很流畅)   测时工具:手机计时
                 (感觉电脑取启动时间不准确)


文件操作:测试时我是在原文件的不同目录下新建加密文件的,以80万字节/次速率进行加密并写进新文件里。
                 
加密效率:463M视频文件平均耗时13.15秒(不加密单纯正常复制粘贴时间5秒,不同目录下粘贴7秒。
                不知道我机子是不是太慢了)   
                  3.78G安装系统文件.rar,大概平均耗时3分38秒.,(不同目录正常复制粘贴时间2分49秒)


解密效率:463M视频文件耗时12.05秒,  3.78G安装系统文件.rar,大概时3分14秒.(整体时间会比加密时间少些)


效率补充说明:效率高低除算法外,还会因电脑配置、系统流畅度、运行时的环境(同时运行了多少程序)而影响。
                         再说下本算法的系统占用率,和正常复制粘贴文件差不多,不会占用多少资源。


原理简介:依然是数据集字节和密码集字节等的纠缠运算,引入8位随机数变量让数据不再重复,引入后实际密码长度会等 于原密码+8位随机数,8位随机数加密到数据中的,并打乱随机位置。解密时依然使用原密码。                    
具体请看源码。<加密后的文件默认放到D:\下面,请自行修改>
               




【原创】CNA加解密数据算法.zip (4.98 KB, 下载次数: 90)

最终完善版本:
---简单美化了下界面
---CNA加解密算法基本没变,只是把<临时变量 = 取空白字节集 (1)>移到8次循环的外面了。
---加密后文件存放位置在要加密的文件相同目录下,文件名标识CNA+
---解密后文件存放位置在要解密的文件相同目录下,文件名标识CNA-
---主要是加了状态条来显示状态、文件名、加解密进度提示(加了这个后效率和原来效率基本不变)

作者:cbuy518
路过围观的朋友请顶一下以表鼓励!
有任何好的想法建议欢迎回复讨论!

【原创】CNA加解密数据算法完善版.zip (5.19 KB, 下载次数: 190)

作者: Thought玫瑰学长    时间: 2017-4-24 01:08

作者: cbuy8    时间: 2017-4-24 01:19
没坐到自己的沙发,围观路过的群众请顶下支持下。
  有好想法一起分享地。不过感觉好像挺少人对加解密这方面有兴趣的。

作者: gongtengbsg    时间: 2017-4-24 04:29
楼主我需要个wpa2解密算法。能否写个字典13位的,分割一下,要不然容量太大。
作者: 2446789312    时间: 2017-4-24 06:41
什么意思??
作者: shuxiang    时间: 2017-4-24 07:04
看起来很快啊!
作者: freexx    时间: 2017-4-24 07:28
加密视频用?
作者: 牵羊逛街的狼    时间: 2017-4-24 07:31
不错……思路学习下
作者: cpu001071    时间: 2017-4-24 07:57
感觉很牛叉啊
作者: cbuy8    时间: 2017-4-24 09:02
gongtengbsg 发表于 2017-4-24 04:29
楼主我需要个wpa2解密算法。能否写个字典13位的,分割一下,要不然容量太大。

不好意思我这没有wpa2算法
作者: cbuy8    时间: 2017-4-24 09:03
freexx 发表于 2017-4-24 07:28
加密视频用?

是任何格式的文件都可以 图片 视频 应用程序,只要是文件都行。
作者: 镇坛道德标杆    时间: 2017-4-24 09:19
对加解密算法很感兴趣    加密算法最重要的是两点   速度和安全

观摩了代码,就光说代码不说算法,说一点我的看法:





猜测引入“固定8位随机数”是为了下面的到文本()之后长度为8,实际上直接到字节集()即可,整数型都是4字节,这样速率有微乎其微的提升,密文长度也可以减短一些。而且就算长度不变,也可以数量级地提高随机率,后面说



临时变量的取空白字节集(1)可以放到循环外面,而且可以用交换变量代替这些语句



和上面的问题一样,取字节集长度()可以放在变量里



然后还有这个默认rand函数的范围,严重影响了你的预期随机率,但是联系上面所说的,如果取两个随机数,虽然范围都只有32768,但是两个就会32768的平方 (1073741824)了

最后为了效率,建议灵活使用指针操作、交换变量、位运算等,速度会提高不少。

对称加密我觉得还是得借鉴那些经典常规对称加密的数据分组/分块算法,感觉对于提升效率和减少资源占用有极大帮助。

作者: 小马爱吃鱼    时间: 2017-4-24 10:16
应该对解密是否成功做个判断吧。还有这种没任务模块的360也报病毒,不知道为什么
作者: cbuy8    时间: 2017-4-24 10:25
junkboy 发表于 2017-4-24 09:19
对加解密算法很感兴趣    加密算法最重要的是两点   速度和安全

观摩了代码,就光说代码不说算法,说一 ...

谢谢大神的分享和指点。你的指点是我前进的动力。
随机数到字节集取8位感觉更保险,随机数部分,怕数字过大会出错和影响速度。
取空白字节放里面,是我系统有点问题,调试时老出错。对换位置这里试了很多篇,
老是丢失数据。才这样放的。我用过交换变量,但数据丢失了,才改回这种方法。
然后主要耗时还是在那个数据集加密的大循环里。其它都是小循环计算。
分组算法不太了解,我是这样区分的,加密部分只负责加密,数据读取录入只负责文件如何读取。
文件数据读入我就只想到了那个[读入字节集]这个方式来应付大文件了。
作者: cbuy8    时间: 2017-4-24 10:33
小马爱吃鱼 发表于 2017-4-24 10:16
应该对解密是否成功做个判断吧。还有这种没任务模块的360也报病毒,不知道为什么

有判断的,那个加解密程序是设置了整数型返回值的。
作者: 晴雯晴雯    时间: 2017-4-24 11:02
来看一下
作者: huaidan2015    时间: 2017-4-24 17:20
能加密文件夹里面的所有文件就好了。。哈哈
作者: cbuy8    时间: 2017-4-24 21:33
大家直接下载完善版就可以
作者: dwtpl    时间: 2017-4-24 22:08
还不错...................
作者: cbuy8    时间: 2017-4-25 13:12
大神们多指点下。对密度和效率说说自己的想法吧
作者: 镇坛道德标杆    时间: 2017-4-25 13:33
本帖最后由 junkboy 于 2017-4-25 21:52 编辑

附件已删除

重现了你的一个BUG,然后在你的代码上修改了代码,对该加密算法的随机范围/密钥的支持/大小数据的支持有所更改。(我的实现也有非常严重的缺陷,不过对这个算法我就不继续了,看看注释就行了)

至于我坚持说【对字节加密用加法很容易被攻J】,我的意思不是说你的算法就可以被一般的人bao力破J,我只是从我所了解的密码学来看一个加密算法被攻J的可能性。

如果有不同意见,可以回复我一起探讨。


作者: cbuy8    时间: 2017-4-25 20:06
junkboy 发表于 2017-4-25 13:33
重现了你的一个BUG,然后在你的代码上修改了代码,对该加密算法的随机范围/密钥的支持/大小数据的支持 ...



作者: 镇坛道德标杆    时间: 2017-4-25 21:46
cbuy8 发表于 2017-4-25 20:06

我重写的有很严重的缺陷,不建议使用

先说你认为的‘改进’,实际上并不是改进:
1  Hash算法我瞎掰的   但是用来校验加密后数据倒是可以参考
2  填充   一定是你调试的姿势不对,相关资料可以很轻松地搜索到,也很好理解
3  只是个我瞎掰的思路,所谓严重的缺陷也就是在这,完全不适合真的拿来当加密算法的核心
4  随机数算法几乎是所有可靠加密算法的核心,所以简简单单地利用系统随机函数实现rand是无强度可言的,了解那些著名的加密库,都会有专门的随机数方案。xor or之类的位运算则几乎是大部分加密算法中最常用的运算了,xor的可逆特性也非常适合这一点,并不出彩。

再说疑问
1  填充不是为了增加加密强度,而是为了分组,这在AES DES中十分常见,会让代码的复杂度降低
2  对于单个字节来说,增量的范围也许变得没有了意义,因为不管增量范围有多大,都会被自动转为[0,255],如果密钥过短,是很容易被攻J的,至于你要问我怎样避免。。。在那些常规加密算法范畴之外我并没有好的办法,毕竟我只是个菜鸟,只是从我的角度评价一个算法
3  我改的算法实际上缺陷极大,在某些特定情况下甚至会暴露原文,所以我从一开始就强调这点了,我一切都是从代码角度提出改进意见,无法从算法角度提出建议

最后,建议了解一些加密算法原理,阅读/翻译一些经典加密算法,可能就会发现,想发布一个加密算法,真的很难。。。如果我改的代码能给你一些启发,自然是开心的,也不必注明,加油
作者: 申朋辉    时间: 2017-4-25 23:46
不错&#13535;
作者: chen5310    时间: 2017-4-26 08:51
提示: 作者被禁止或删除 内容自动屏蔽
作者: rcbing    时间: 2017-4-26 23:16
楼主厉害,不明觉历!
作者: MaitingMloved    时间: 2017-4-27 09:54
提示: 作者被禁止或删除 内容自动屏蔽
作者: cbuy8    时间: 2017-4-27 14:16
MaitingMloved 发表于 2017-4-27 09:54
这这个皮肤模块可以分享吗

没有皮肤模块,只是改变了字体大小颜色。win10系统截图后就那样。
作者: 15887059803    时间: 2017-4-29 20:18
支持开源,感谢分享
作者: titan200010    时间: 2017-4-30 08:26
好东西谢谢分享

作者: a2415419640    时间: 2017-5-1 16:15
进来学习学习
作者: xueyi08    时间: 2017-5-5 08:55
支持…………
作者: 1070708268    时间: 2017-5-6 21:59
dhasdh ahdsaldjsaldjlksa
作者: jwshu    时间: 2017-5-10 04:01
路过的我顶你一下以表鼓励!
作者: attracting    时间: 2017-5-11 00:06
太厉害了,话说这个加密算法是你自己独创的吗
作者: cbuy8    时间: 2017-5-11 00:22
attracting 发表于 2017-5-11 00:06
太厉害了,话说这个加密算法是你自己独创的吗

  思路和代码都是自己写的。你说呢。易论坛那边cbuy518和我这边都是本人的。
作者: a2415419640    时间: 2017-5-11 17:08
厉害了学习了,感谢
作者: 光音    时间: 2017-5-12 17:11
非常感谢楼主分享
作者: ozoo0314    时间: 2017-5-13 22:36
支持支持,学习了
作者: 飞鹰99    时间: 2017-5-19 15:34
感谢分享
作者: 只爱你一人666    时间: 2017-5-22 15:20
感谢分享,学习
作者: hhzongheng    时间: 2017-5-23 15:37
感谢分享。。。
作者: callng    时间: 2017-5-24 12:37
看看看看看看看看看看看看看看看看
作者: wawqwqq    时间: 2017-5-29 11:23
用这个做勒索病毒把
作者: °Rex    时间: 2017-5-30 18:57
新技能已get√
作者: 精易神    时间: 2017-6-5 20:09
谢谢拉猪~~ADSA
作者: 吾爱编程mm    时间: 2018-4-2 23:05
不明觉厉不明觉厉不明觉厉不明觉厉
作者: wangshiyuan    时间: 2018-4-17 13:10
感觉很厉害
作者: miaorui    时间: 2023-5-23 09:49
感谢分享,很给力!~




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4