一个新的加密算法诞生了 ( 积分: 50 )

  • 主题发起人 我爱PASCAL
  • 开始时间

我爱PASCAL

Unregistered / Unconfirmed
GUEST, unregistred user!
加密算法分分块的和整体的两种,des是分块的。
我这个加密算法是用生成一个无限长密钥流来和明文xor来进行加密的。
对于无限长的密钥如不能得到,则理论上不可破解,而怎样生成无限长
密钥就是关键,好的算法要求种子密钥长度大于安全长度的情况下足够
小,RC4就是通过算法生成伪随机的密钥流来xor明文加密的,不过最近
说有人破解了它的算法,我最近想了一种方法,可以生成无限长密钥流
不过速度比较慢,只能加密不长的明文。
原理是这样的,选一质数做密钥,质数要比较大,太小容易被猜到,用
这个质数开平方,取小数部分(转为二进制)作为密钥流,明文有多长
就取小数后多少位,不能用合数,如果用合数m=p*q(p,q为质数),那么
sqrt(m)=sqrt(q)*sqrt(p),那么m生成的密钥就是q生成的密钥和p生成的
密钥相xor得到的。
 

我爱PASCAL

Unregistered / Unconfirmed
GUEST, unregistred user!
过去我想的一种方法到是可以实现较大的密钥流,不过比较短,会重复,重复就容易被破。
这个方法但是加密很快
这个方法我取名叫最小公倍数法
用二个种子密钥,最好互质
比如一个是100位数,一个是99位数
两者组合,组合方式就像天干对地支一样,这样由于互质,组合后的密钥流长度为
9900,密钥流长度=密钥一长度*密钥二长度/其最大公约数,互质的话最大公约数
为1,如要得到更大的密钥流,就要用多个种子密钥,比如我们取
100位,101位,102位的三个密钥,组合起来就是约1000000位了。当然还会有重复
比不上RC4的密钥流生成算法。
不知各位加密算法研究者还有什么好方法。
 

白河愁

Unregistered / Unconfirmed
GUEST, unregistred user!
具体可以应用在什么方面?
 

我爱PASCAL

Unregistered / Unconfirmed
GUEST, unregistred user!
加密的用处太多了,这段时间我在学习加密技术,
从大点来说,军事上,商业中,比如银行
主要有两个方向,一个是大数据的加密发送问题,解决办法,目前是des
二个发送的安全问题,des加密数据安全性高,可发送就要发密码,因为
加密和解密密码一样,所有密码发送必须保密,这个是des不能做到的,就
要用到公私钥这样的算法,
三个是验证身份的方向,比如数字签名,共享软件的注册机
目前我在想一种加密大数据的快速方法,要比Des快几个数量级,但保密性要好
我上面思考的两种方法,第一种速度慢,能不能用穷举破解我也不知道;
第二种速度特快,内存中可达每秒数百M,不过密钥生成重复率太高,好像RC4方法
生成的密钥流几十万个才重复他们都认为不安全。
 
W

wr960204

Unregistered / Unconfirmed
GUEST, unregistred user!
能从数学方面证明他的可靠性吗
 
C

creation-zy

Unregistered / Unconfirmed
GUEST, unregistred user!
几个问题:
XOR加密的最大问题就是抗攻击能力太低,而不是密钥空间大小。例如:当攻击者利用种
种手段获得两个用相同密钥加密的密文中一个的明文,那就可以用XOR反推出密钥流,进而
破解另一个密文,取得明文。XOR的特点是信息在本质上是固定的,任何一个密文信息位都
只和相同位置上的明文信息位以及密钥信息位有关,而与所有其它因素都没有任何关系。而
若要提高加密强度,则必须使用移位以及叠加等其它运算方式(DES、MD5使用的是移位与其
它运算的组合,而双向流式加密算法使用了叠加)。
密钥流可以无限长,但是你的密钥流获取方式决定了密钥空间仍然是有限的——理论上可
以用有限穷举的方法进行攻击。RSA加密算法也用了大质数,而且是两个,但它的运算方式
决定了它有极强的抗反向分析能力——当然,代价是运算速度成百上千倍的降低。不过,您
的算法虽然加密主体算法是极为高效的XOR算法,但是密钥流的生成采用了开方运算——所
以耗时将集中在密钥流的产生过程,很可能并不比强度更高的DES快(由于使用了容易被攻
击的XOR加密,所以频繁的使用同一套密钥流是非常危险的,为了安全,只能不断的重新生
成新的密钥流)。
其实,只要有长度可任意扩展的密钥流,任何类似DES的分块加密算法都可以很容易的改
头换面为整体复杂度任意高的加密算法,而非只有XOR加密才能这么做。
 

我爱PASCAL

Unregistered / Unconfirmed
GUEST, unregistred user!
>您的算法虽然加密主体算法是极为高效的XOR算法,但是密钥流的生成采用了开方运算——所以耗时将集中在密钥流的产生过程
这个我也觉得是,第二个公倍数的加密方法就很快了,因为生成密钥快。不过安全性低。
你那个双向流式加密我研究了一下,就是可以将每个字节的信息影响到其它所有字节,
这个方法能不能在公开算法的情况下,不公开密钥时,安全性高不高。双向流式加密
我已用在加密我的软件密码上了,效果不错,只要改动一个字母,加密后的密文就全变了。
 

我爱PASCAL

Unregistered / Unconfirmed
GUEST, unregistred user!
>能从数学方面证明他的可靠性吗
无理数都是无限不循环的,这个数学方面能证明,只要对不同的明文密钥——质数只用一次,就只能用穷举法破解,但是明文不能太长。
 

白河愁

Unregistered / Unconfirmed
GUEST, unregistred user!
xor其实还是很好的,除了直接向数据线加密,还可以向地址线配合not和shift,那样就算是穷举也不是容易的事.但对于软件加密来说意义还是不大,再好的算法不会利用的话免不了就是74->EB
 

我爱PASCAL

Unregistered / Unconfirmed
GUEST, unregistred user!
好像RSA算法也未被理论证明,解密难度和分解大质数等效。
to 白河愁:这些加密算法还不是用来加密软件exe文件的,不过我想
如果在程序中隐蔽处检测exe的数字签名的话,即使你改了一处跳转
数字签名都会变化,这个也是加密的一个应用,数据或文件的完整性
其思想是,我不能阻止你改文件内容,但知道你改了。
比如我在一个设置文件里放程序进入的口令,为了防止他人看到口令,
我就将口令加密再保存,但是他可以改动口令,虽然自已不能破解,
但也更改了你的口令,那么我就用这样一个方法,将口令用密钥1加密
一次,再用密钥2加密一次,放在文件中,你无论怎么改,都无法让反
算回的两个口令相等。从而保证口令不会被更改,虽不能保证口令的破坏
因为破坏了我们就会知道,更改了则不知道。如果这个口令是用来给很多文件加密的
密钥,一旦被改,会造成这些文件可能无法恢复。对于加密exe来说也可以用这个思想
你可以破坏,但你无法改动。
 

白河愁

Unregistered / Unconfirmed
GUEST, unregistred user!
数字签名要看看其实现机制是哪里实现的,否则也是74EB的问题.
加密文件固然好,但其缺陷和NTFS加密的一样,一旦丢失证书或者密码所有文件全部作废.
 

我爱PASCAL

Unregistered / Unconfirmed
GUEST, unregistred user!
NTFS的加密方式好像要求重装前要解密所有的文件,那什么时候才知道重装呢,经常是启动不了了才重装,这时又如何去解密它。所以这个方法不安全。
有些加密文件只需要个密吗,用户记在心里就可以了,不需要NTFS的那种证书。
另外我想到一个问题:象foxpro这样的数据库是完全不设防的,用户可以直接打开改里面的数据,文本方式都能改。而access这样的数据库是加密的,但是用户能不能不进数据库修改它的数据呢,虽然用户不知道改的什么,但能改,这样的加密也不安全。不知道SQLSERVER
能不能防改,也就是说一个数据加密后保存为两份,改到其中一个,就和另一个不一样了。
 

白河愁

Unregistered / Unconfirmed
GUEST, unregistred user!
ntfs只要备份证书,重装导入就可以读到数据了,其实跟密码是完全一样的.
没备份证书=忘记密码,都是没救的.
其实要改我觉得foxpro反而安全一点,因为结构简单,完全可以自己加密,然后读到内存中去处理. access数据其实也可以改的,只不过数据相对复杂. sqlserver....黑箱子....
 

我爱PASCAL

Unregistered / Unconfirmed
GUEST, unregistred user!
我的观点是只有这样的数据库才是真正安全的,就是从外边无论如何也无法修改字段内容。
或增加或删除一个记录都不行。只能通过密码在程序内修改。如果强行修改就会造成数据库破坏,这时启动应急预案。通俗的话说就是宁为玉碎不为瓦全。
 
D

dcs_dcs

Unregistered / Unconfirmed
GUEST, unregistred user!
算法不是很多种吗,干吗还在讨论
 
D

dreamfly1024

Unregistered / Unconfirmed
GUEST, unregistred user!
支持dcs_dcs, 这儿讨论的还是缺乏点深度
 

我爱PASCAL

Unregistered / Unconfirmed
GUEST, unregistred user!
一些我的个人学习心得
 
K

kinneng

Unregistered / Unconfirmed
GUEST, unregistred user!
觉得用处不大。
 
W

wr960204

Unregistered / Unconfirmed
GUEST, unregistred user!
还是很有用的.不过有了现成的DES,RC4,RSA.楼主说的就都可以实现了.
但是研究加密算法是一件非常有趣的事情,自己动手其乐无穷
 
Z

zqw0117

Unregistered / Unconfirmed
GUEST, unregistred user!
鼓励楼主在这里讨论算法。有思考才有进步。楼上两位(dcs_dcs,dreamfly1024)不想讨论这个问题可以不发言!
 
顶部