当前位置:编程学习 > 网站相关 >>

寻求下面算法的破解方法

寻求下面算法的破解方法

温潇   (admit.wenx@gmail.com)

转贴请注明出处

寻求下面算法的破解方法。(Copy Right by WenX, admit.wenx@gmail.com)

本加密算法由温潇,WenX, admit.wenx@gmail.com提出。

      输入:分组大小、待加密文件名、输出文件名、加密强度(Strong)、key

//假设现有16个子替换模块,16个子置换模块,4种反馈模式,分别编号为0~15;0~15;0~3。

0.             预处理

得到分组数量(G)

分组时的在文件前部填充随机数直至恰好能够分成整数组。

1.             子密钥生成

(1)       由Salt、key、文件长度、Strong进行拼合[①]得到Ka,分别使用SHA-512与Whirlpool散列,得到两个512位的散列值。再将两散列值拼合与密钥和当前循环轮数相加后再次散列,循环50次后得到一个1024位的K0。

(2)       使用K0得到Strong +1个KC,方法如下:

将K0+i用MD5散列,得到结果为KC[i],后置K0:= K0+MD5(K0+i)。

(3)       用相同方法得到Strong+2个KB与Strong+3个KC。

2.             加密过程

iKA,iKB分别指向KA、KB正在使用的位置;it表示正在进行的轮数,ip表示正在执行的分组数。

For ip:=1→G step 1

M:=读取第ip组数据

        For it=1→Strong step 1

           使用第(KA[iKA]⊕(KA[iKA]>>1))&3种反馈算法对M与KC[it] 各进行一次反馈操作,反馈输入为KC[it]。

      使用第KA[iKA]⊕(KA[iKA]>>9)&7种子替换模块对M于KB[iKB] 各进行一次加密,密钥为KB[iKB]。

      对KB[iKB]进行高低位置换。

      使用第KA[iKA]⊕(KA[iKA]>>17)&7种子置换模块对M于KA[iKA]各进行一次加密,密钥为KB[iKB]。

      End for

使用第(KA[iKA]⊕(KA[iKA]>>1))&3种反馈算法对M与KC[it] 各进行一次反馈操作,反馈输入为KC[it]。

输出M

End for

3.             文件尾生成

文件尾包括:加密版本信息(8bit)、文件前部随即填充块长(8bit)、Strong(8bit)、salt(8bit)。

使用K0进行分成两部分→异或→分成两部分→异或……直至长度缩短为32位后与文件尾异或。

将文件尾保存在文件末端



--------------------------------------------------------------------------------

[①] 此处,拼合表示将几个值顺序连接起来。




Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=2027030


温潇   (admit.wenx@gmail.com)

转贴请注明出处

寻求下面算法的破解方法。(Copy Right by WenX, admit.wenx@gmail.com)

本加密算法由温潇,WenX, admit.wenx@gmail.com提出。

      输入:分组大小、待加密文件名、输出文件名、加密强度(Strong)、key

//假设现有16个子替换模块,16个子置换模块,4种反馈模式,分别编号为0~15;0~15;0~3。

0.             预处理

得到分组数量(G)

分组时的在文件前部填充随机数直至恰好能够分成整数组。

1.             子密钥生成

(1)       由Salt、key、文件长度、Strong进行拼合[①]得到Ka,分别使用SHA-512与Whirlpool散列,得到两个512位的散列值。再将两散列值拼合与密钥和当前循环轮数相加后再次散列,循环50次后得到一个1024位的K0。

(2)       使用K0得到Strong +1个KC,方法如下:

将K0+i用MD5散列,得到结果为KC[i],后置K0:= K0+MD5(K0+i)。

(3)       用相同方法得到Strong+2个KB与Strong+3个KC。

2.             加密过程

iKA,iKB分别指向KA、KB正在使用的位置;it表示正在进行的轮数,ip表示正在执行的分组数。

For ip:=1→G step 1

M:=读取第ip组数据

        For it=1→Strong step 1

           使用第(KA[iKA]⊕(KA[iKA]>>1))&3种反馈算法对M与KC[it] 各进行一次反馈操作,反馈输入为KC[it]。

      使用第KA[iKA]⊕(KA[iKA]>>9)&7种子替换模块对M于KB[iKB] 各进行一次加密,密钥为KB[iKB]。

      对KB[iKB]进行高低位置换。

      使用第KA[iKA]⊕(KA[iKA]>>17)&7种子置换模块对M于KA[iKA]各进行一次加密,密钥为KB[iKB]。

      End for

使用第(KA[iKA]⊕(KA[iKA]>>1))&3种反馈算法对M与KC[it] 各进行一次反馈操作,反馈输入为KC[it]。

输出M

End for

3.             文件尾生成

文件尾包括:加密版本信息(8bit)、文件前部随即填充块长(8bit)、Strong(8bit)、salt(8bit)。

使用K0进行分成两部分→异或→分成两部分→异或……直至长度缩短为32位后与文件尾异或。

将文件尾保存在文件末端



--------------------------------------------------------------------------------

[①] 此处,拼合表示将几个值顺序连接起来。




Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=2027030

--------------------编程问答-------------------- 加密算法的要求不仅是安全性,还要有效率
没有认证分析安全性,但是看到里面使用sha和md5就知道效率很低。
好好看看hash的源代码,为了达到散列的效果,大多都牺牲了效率
补充:云计算 ,  云安全
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,