主权项 |
1.一种基于整数非线性映射的散列函数构造方法,包括如下具体步骤: (1)消息填充,将任意长度的明文消息M分割成1024比特的消息块M<sub>0</sub>,…,M<sub>i</sub>,…,M<sub>t</sub>,最后一个块填充为:M<sub>t</sub>=*…*10…0Mdlen(H)Length(M),其中,“*…*”为剩余消息比特,“10…0”为剩余消息比特不足950(1024-10-64)比特时的填充位,Mdlen(H)表示输出的散列长度,长度为10比特,Length(M)表示M的长度的二进制形式,长度为64比特,将每个消息块M<sub>i</sub>划分成两组,每组由16个32比特的消息字组成,分别为m<sub>0</sub>,m<sub>i</sub>,…,m<sub>15</sub>及<img file="FDA0000490693330000011.GIF" wi="345" he="54" />(2)给定一组初始向量及参数: <img file="FDA0000490693330000012.GIF" wi="1525" he="310" />k<sub>0</sub>=0x5a827999,k<sub>l</sub>=0x6ed9eba1,k<sub>2</sub>=0x8f1bbcdc,k<sub>3</sub>=0xca62c1d6, k<sub>4</sub>=0x99728a5a,k<sub>5</sub>=0xlabe9de6,k<sub>6</sub>=0xcdcbb1f8,k<sub>7</sub>=0x6d1c26ac, (3)非线性分段式码字扩展方式: 先将消息字m<sub>0</sub>,m<sub>1</sub>,…,m<sub>15</sub>及<img file="FDA0000490693330000013.GIF" wi="320" he="53" />依序赋值给W<sub>t</sub>及<img file="FDA0000490693330000014.GIF" wi="60" he="54" />(0≤t≤15);<img file="FDA0000490693330000015.GIF" wi="1205" he="445" />然后,利用上式对消息字m<sub>0</sub>,m<sub>i</sub>,…,m<sub>15</sub>及<img file="FDA0000490693330000016.GIF" wi="354" he="55" />进行消息扩展,先通过<img file="FDA0000490693330000017.GIF" wi="1576" he="53" /><img file="FDA0000490693330000018.GIF" wi="369" he="52" />进行10次迭代操作,随后再利用非线性映射<img file="FDA0000490693330000019.GIF" wi="382" he="51" /><img file="FDA00004906933300000110.GIF" wi="555" he="51" />进行码字扩展,得到扩展码字序列W<sub>16</sub>…,W<sub>63</sub>及<img file="FDA00004906933300000111.GIF" wi="162" he="55" /><img file="FDA00004906933300000112.GIF" wi="96" he="53" />其中:+表示mod2<sup>32</sup>的加法运算,∨表示逐比特逻辑或,<img file="DEST_PATH_FDA0000488257560000014.GIF" wi="36" he="40" />表示逐比特逻辑异或,<<表示左移位操作,>>表示右移位操作,<<<表示循环左移位操作,(4)采用耦合映像系统模型进行并行方式的混合迭代运算: 1)<img file="FDA00004906933300000114.GIF" wi="1488" he="60" />2)t从0开始,步长为1,变化到11,进行12轮迭代运算,具体过程如下: For t=0 to 11 {当t为偶数时 k=(t/2)*8+16; <img file="FDA0000490693330000021.GIF" wi="946" he="53" />i=0,…,7,<img file="FDA0000490693330000022.GIF" wi="1382" he="142" />i=0,…,7,当t为奇数时 k=((t-1)/2)*8+16; <img file="FDA0000490693330000023.GIF" wi="946" he="54" />i=0,…,7,<img file="FDA0000490693330000024.GIF" wi="1413" he="145" />i=0,…,7,),其中:~表示求反运算; 3)将<img file="FDA0000490693330000025.GIF" wi="226" he="58" />分别加到x<sub>0</sub>,…,x<sub>7</sub>,即:<img file="FDA0000490693330000026.GIF" wi="1109" he="147" />4)对剩下的消息块继续2)、3)的操作,直到最后一个消息块, (5)算法散列输出 并行迭代结束后,最后的输出结果即为256比特的散列值:x<sub>0</sub>||x<sub>l</sub>||x<sub>2</sub>||x<sub>3</sub>||x<sub>4</sub>||x<sub>5</sub>||x<sub>6</sub>||x<sub>7</sub>,根据不同场合的应用需求,通过输出变换,得到输出结果为160,192或224比特的消息摘要。 |