返回首页

介绍
争抢的Anagram算法进行加密,通过改变一个字节数组内的字节的位置,使用基于密码的规则。当然,它可以同时适用于字符串或其他类型的数据,我选择了,因为他们是多才多艺的字节数组,可以很容易地转换到/从字符串,也可以很容易地从文件中读取。
我开发的算法,而思考一种方法来克服弱点块CYPHER算法(喜欢的,例如,Rijndael算法,即使用的AES),当cyphering文件。我不知道,如果该算法根据不同的名称已经存在... (如果没有,那么我将有一个更美丽的改变与这个名字)。算法描述
该算法需要两个输入字节数组:cleardata和密码,并返回一个字节数组(称为,从这里输出)。输入字节数组(cleardata)读两次,从(0字节)开始到结束,一次一个字节;在同一时间读取密码,一次一个位,因此,对于每一个字节cleardata,我们必须在相应位的密码(密码字节数组小于的cleardata的,然后我们在循环密码获得相应的位;即,换句话说:在密码位的位置=位置在的cleardata模密码长度的字节,公式中的话:bitpositioninpassword = bytepositionincleardata%password.length;
现在,我们可以开始写输出文件。
虽然在时间读的cleardata第一次,一个字节,该字节添加到输出,如果密码的相应位为1,然后我们再次读取第二次cleardata,一次一个字节,我们添加到输出的字节,如果在相应的密码位为0;(有其他方法可以做到这一点,甚至用一个单一的传球,但这种方法似乎是最容易理解的)。
,输出的第一部分将包含的cleardata字节对应的密码,而第二部分的输出将包含cleardata相应的密码零字节。使用代码
该算法已在这里实现编码和解码功能,可用的字节数组,即,使用扩展:

byte[] mydata; byte[] mypass;

// here: allocate and set or read the two arrays

byte[] myoutput = mydata.Cry_ScrambleByteRightEnc(mypass);

ecode /解码到/从一个字谜,字节经营的两个主要功能,可以发现在下面的代码(Cry_ScrambleByteRightEnc,Cry_ScrambleByteRightDec)。
相同的算法可以很容易地修改动议的cleardata位,而不是字节。输出,当然,不是一个字谜,并进行解码,如果不知道密码,那就更困难,它会运行比原来慢。此实现,看到的的功能Cry_ScrambleBitRightEnc,Cry_ScrambleBitRightDec。{C} 其他用途(加密)
无论如何,一边用字谜的难题,该算法具有某种加密(在我看来)有趣的应用程序。单独服用,它没有提供足够的安全度,因为它不改变cleardata字节,但它只是将它们移动。即使位版本有很大的弱点:第1位的数量在输出在cleardata的是相同的(同样是,当然,真正0位)。但是,比较的惯常的块密码alghoritms的,它适用于整个输入,不只是在16或32个字节的块,这意味着,输入越大,就越难将解码工作(这意味着也将非常微弱在流cyphering,因为流块小)。结合的争夺的Anagram,例如,Rijndael算法可以给出生一个更强大的的CYPHER算法,两种算法相结合的良好功能。
可以经营下列顺序(使用相同的密码,每个操作和使用的每一个输入以下操作的输出),例如,尝试:争夺的的Anagram字节争夺的的Anagram位Rijndael算法争夺的的Anagram位争夺的的Anagram字节
难道是比使用一个简单的Rijndael更强?这个问题是加密分析师。此外,添加更多的安全,也可以把上述操作为一个周期,重复这些操作n次(每次使用以前的输出作为输入),(希望)提供更大的安全与每个重复(也有在执行时间的更大的成本)。历史2011年12月02日 - 首次发布

回答

评论会员:洛伦佐加蒂 时间:2012/02/07
"?难道比使用一个简单的Rijndael加密分析师这个问题是"
没有,这个问题是你,因为你正在索赔,并建议算法。

"此外,添加更多的安全,人们也可以把上述操作为一个周期,重复这些操作n次(每次使用以前的输出作为输入),(希望)给每一个重复更大的安全"{BR }
你都声称,作为AES的计算昂贵的改善,置换明文将更为有用比说,一个健康而设计的AES更多的两轮或更长的时间块或更长的关键,这是极不可能的变种,因为你的加扰算法读取输入两次(而不是一次,像一个正常的流CYPHER)

但你也声称,重复使用相同的密钥扰可能是更好的,公然荒谬:没有不管你做什么,N位的密钥可以不产生超过2 ^ñ不同的排列
|。victorbos
评论会员:游客 时间:2012/02/07
来吧!给他休息。他至少写文章,有兴趣的转折,并明确他有幽默感。音色少交战国将已被这么多更多建设性:布鲁诺T​​abbia:感谢victorbos他真的害怕我时,我读第一次的答案,但你的话给了我希望再次这是第一篇文章,我写,我是怕做错事细则
!布鲁诺Tabbia
评论会员:游客 时间:2012/02/07
嗯,缺乏分析,有没有在这篇文章中,我不加密分析师,我发表这篇文章的原因之一是要找到的人可以给点建议,有关分析,改进,应用等我有这个想法,然后实现它,还因为我想与其他国家的人民分享:它可能是一个新的想法,也许有人能找到它有用无论如何,我已经大概在我的论述太合成,所以我会尽量更好地解释:首先,这主要文件的目的是为alghorithm,不流(看到我的文章的第二段"cyphering文件时","其他用途"时,我写了"非常薄弱在流cyphering");流cyphered逐块,而文件可以cyphered作为一个整体。二,本alghorithm拟用于与现有的算法NBSP。现在...cyphering1整个块(而不是很多32byte块)的文件是相当1的努力,但结果会比cyphering块中它更安全(这就是为什么,我想,在一些国家写日期的顺序,是非法进行块与块cypheringCYPHER不知道密码,并使用文本比一个给定的大小(通常是128或256位))不再当试图解密,例如,蛮力攻击,我们通常试图打破的第一个块,然后,我们找到一个可能的密钥后,尝试对其余块。我们这样做是因为打破一个或两个32byte块比打破例如整本书作为"神曲"在一个单一的块更容易。这样的想法是:我怎么可能给代码断路器很难适应更长的块大小的Rijndael算法(或其他块CYPHER)?如果我抢前后应用Rijndael的所有文件中的字节,然后我可以得到一个加密的文件,这是比使用Rijndael的Alghorithm(扰字节加​​密文件更难以打破的是速度非常快,所以这将是一个非常"低成本的解决方案),但我不肯定:这就是为什么我写了:"难道是强比使用一个简单的Rijndael这个问题是为加密分析师?"。我希望,有人在该领域的经验可以给我一个'专家'的答案,或者至少有一些意见。我希望这回答你的第二个消息"应用程序吗?"(我发言的弱点是一个事实,即河算法使用(主要是128或256位,有时192)小块)。NBSP关于"读两次输入":这是最简单的实现,但我也试过1)一个单一的读,写两个输出阵列,然后加入他们;2)一个单一的读写在非顺序输出,但是这需要那些指望在密码前开始争夺(,如果你​​直接使用由用户提供的密码是相当快的,但如果你使用算法扩展密码文件的长度,那么它可能是更慢)关于使用相同的密钥重复扰,你可能是正确的。我说:'希望',我希望错误的。可能在这种情况下,它会是有趣的添加一个新的台阶,之前在文章中提到的五个操作:展开的密码,然后除以在N块(其中N是周期的重复数),然后使用不同的每重复密码块。您对此的看法是什么?NBSP,请让我知道您的想法,其余细则
洛伦佐加蒂
评论会员:游客 时间:2012/02/07
"有关办法克服块CYPHER算法的弱点(思想。喜欢的,例如,Rijndael算法,使用的AES)"什么弱点?AES可能不会是完美的,但如何将置换提高输入:布鲁诺T​​abbia:这个问题我在我的答复answerd到您的其他消息:"缺乏分析"