首页
社区
课程
招聘
[原创]讨论循环加密
发表于: 2006-12-10 10:21 3875

[原创]讨论循环加密

2006-12-10 10:21
3875
本人开始就对压缩有感兴趣,研究没啥好说的,没成功,无意发现了一个数据转化过程可以当作加密使用,随后又发现了几个相似的转化,转化后的数据各不相同,只国为它们转换有一定的周期循环,就命为循环加密。

定义:二进制通过特定的计数法计算并排列得到的二进制,具有部分或全部循环的二进制数据叫循环数据,这种转化方法叫循环加密。
一般步骤:将N位的二进制数据(*1)前加1位0(*2),再将连续相同的数转化为1、01、001等以1为结束的计算法的数据(*3),并且将各个数据呈现出垂条型(*4),从垂条型的第一横排开始取,直到最后一横排,取其中的前N位(*5)。
    如:0010,010010
        *1       *2        *3         *4         *5
        0010     00010     00111      011        0110
                                      0
                                      1
        010010   0010010   0110111    01011      0101111
                                      1 1
可变量:*1可在二进制转化前+或-一个数、左右对调或反码。
        *2可加0,1,00,11,01,10
        *3计算法有二种:下面的代表:1, 2,  3,   4,    5…(个)
                       1、全部循环:1,01,001,0001,00001…
                                    0,10,110,1110,11110…
                       2、部分循环:0,00,010,0101,01001…
        *4一般取法:从第一横排从左开始取
            特殊的:从X横排从左(或右)开始取
        *5可在二进制转化后+或-一个数、左右对调或反码。

全部循环(二种):
    一、周期大概固定的:
    如下面5种:(2^N为2的N次方)
       1、将N位的二进制数据前加1位0,再将连续的1或0转化为1、01、001等以1为结束的计算法的数据,并且将各个数据连接起来,取其中的前N位。
         周期分4段:1。全为0  2。最后一项为1其它为0  3。00…0010到01…1111  4。10…000到11…111
         连续加密可产生(2^(N-1)-1)^2种不同结果
       2、将N位的二进制数据前加1位0,再将连续的1或0转化为1、01、001等以1为结束的计算法的数据,并且将各个数据呈现出垂条型,从垂条型的第一横排开始取,直到最后一横排,取其中的前N位。
         周期分3段:1。全为0  2。00…0001到01…1111  3。10…000到11…111
         连续加密可产生(2^N)*((2^N)-1)种不同结果
       3、将N位的二进制数据前加1位1,再将连续的1或0转化为1、01、001等以1为结束的计算法的数据,并且将各个数据呈现出垂条型, 从垂条型的第一横排开始取,直到最后一横排,取其中的前N位。
         周期分1段:00…000到11…111
         连续加密可产生2^N种不同结果
       4、将N位的二进制数据前加2位0,再将连续的1(或0)转化为1、01、001等以1为结束的计算法的数据,
并且将各个数据呈现出垂条型,从垂条型的第一横排开始取,直到最后一横排,去掉最前最后各1位。
         周期分1段:00…000到11…111
         连续加密可产生2^N种不同结果
       5、N位的二进制数据前1位是0加、0非0加1,加0时将连续的1(或0)转化为1、01、001等以1为结束的计算法的数据,并且将各个数据呈现出垂条型。加1时将连续的1(或0)转化为0、10、110等以0为结束的计算法的数据,并且将各个数据呈现出垂条型。
         周期分4段:1。全为0  2。全为1  3。00…0010到01…1111  4。10…000到11…110
         连续加密可产生(2^(N-1)-1)^2种不同结果
    二、周期随N的变化而变化:
       如:将N位的二进制数据前加1位0,再将连续相同的数转化为1、01、001等以1为结束的计算法的数据,并且将各个数据呈现出垂条型,从垂条型的第一横排开始取,直到最后一横排,取其中的前N位,并左右对调。
       当N=3时转化如下面:(→表示转化的方向)
       前:000、001、010、011、100、101、110、111
       后:000、010、110、100、011、111、101、001
       循环:000→000   001→010→110→101→111→001  011→100→011
       当N=4时转化如下面:
       前:0000、0001、0010、0011、0100、0101、0110、0111、1000、1001、1010、1011、1100、1101、1110、1111
       后:0000、0010、0110、1000、1010、1110、1100、0100、0011、1011、1111、0111、1001、1101、0101、0001
       循环:0000→0000   0011→1000→0011    0101→1110
             0001→0010→1100→1011→0111→0100→1010→1111→0001
部分循环:
    如1:将N位的二进制数据前加1位0,再将连续相同的数转化为1、00、011、0101等以1为结束的计算法的数据,并且将各个数据呈现出垂条型,从垂条型的第一横排开始取,直到最后一横排,取其中的前N位。(垂条型除第2横排以0结束其佘以1结束)
    当N=3时转化如下面:
    前:000、001、010、011、100、101、110、111
    后:010、011、011、000、110、111、101、101
    循环:000→010→011→000           111→101→111
          ↑                      ↑
    非循环:       001                 100→110

    如2:将N位的二进制数据前加1位0,再将连续相同的数转化为1、00、011、0101等以1为结束的计算法的数据,并且将各个数据呈现出垂条型,从垂条型的第一横排开始取,直到最后一横排,取其中的前N位。(垂条型都以1结束)
    当N=3时转化如下面:
    前:000、001、010、011、100、101、110、111
    后:010、011、010、000、110、111、100、100
    循环:            010→010    100→110→100
             ↑          ↑
    非循环:001→011→000    101→111

特点:随N的变化而变化。如:将N位的二进制数据前加1位0,再将连续的1或0转化为1、01、001等以1为结束的计算法的数据,并且将各个数据呈现出垂条型,从垂条型的第一横排开始取,直到最后一横排,取其中的前N位。
  N=7    1001110 →1100110
  N=8后  01001110→01001110
  N=8后  11001110→01001110
      
应用:加密、密码验证

如有不对称、复制到TXT中看。。。
大哥大姐不要用“年龄”压人。。。

最早发的地址

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
2
用逻辑运算指令+位操作指令

如果用ASM,不需要特定算法转换二进制了

新兵训练场第一期第二题,我给出的题目就是分析实现位倒置的ASM代码。

http://bbs.pediy.com/showthread.php?s=&threadid=35559

代码来自《汇编语言的艺术》

纯理论意义不大,菜鸟要的是代码。《汇编语言的艺术》的那段代码是实现位倒置的优化算法。连优化算法都有了,估计不少编程高手都知道可以这么加密
2006-12-10 10:52
0
游客
登录 | 注册 方可回帖
返回
//