发明名称 密钥可变的内轮置换流密码加密方法
摘要 本发明公开一种密钥可变的内轮置换流密码加密方法,其采用不同的数学运算符,快速实现密钥比特间的混淆性;在密钥流字节的计算中采用“纵向”扩散和“横向”压缩的相结合的比特混合置乱技术;密钥流字节采用多轮“迭代”方法得到,保证算法抵抗攻击;引入固定常量,破坏内轮函数结构,避免滑动攻击;种子密钥和初始向量的长度保证抵抗时空折中攻击;算法的运算符交替出现,分布均匀以抵抗一般的边信道攻击,特别功耗攻击;采用15轮的迭代内部状态具有足够的稳健性,足以抵抗传统的差分攻击;种子密钥长度可以根据安全强度选择;算法简洁、安全性高;各个密钥流块独立生成,特别适合平行计算,软件和硬件容易、快速实现,各种平台实现灵活。
申请公布号 CN103152171B 申请公布日期 2015.11.18
申请号 CN201310099408.4 申请日期 2013.03.26
申请人 桂林电子科技大学 发明人 丁勇;韦永壮;李新国;丁继强;官秀国
分类号 H04L9/18(2006.01)I;H04L9/08(2006.01)I 主分类号 H04L9/18(2006.01)I
代理机构 桂林市持衡专利商标事务所有限公司 45107 代理人 陈跃琳
主权项 密钥可变的内轮置换流密码加密方法,其特征是包括如下步骤:(1)内部状态初始化阶段:(1.1)随机选择3~8个32比特的种子密钥K=(k<sub>0</sub>,k<sub>1</sub>,…,k<sub>7</sub>)和3个32比特的初始向量v=(v<sub>0</sub>,v<sub>1</sub>,v<sub>2</sub>),确定3个32比特的常量值c=(c<sub>0</sub>,c<sub>1</sub>,c<sub>2</sub>);启动2个32比特的计数向量t=(t<sub>0</sub>,t<sub>1</sub>);当所述种子密钥K=(k<sub>0</sub>,k<sub>1</sub>,…,k<sub>7</sub>)为3×32比特时,则种子密钥K=(k<sub>0</sub>,k<sub>1</sub>,…,k<sub>7</sub>)随机选取前面3个字,余下的5个字则固定为全“0”或全“1”;当所述种子密钥K=(k<sub>0</sub>,k<sub>1</sub>,…,k<sub>7</sub>)为4×32比特时,则种子密钥K=(k<sub>0</sub>,k<sub>1</sub>,…,k<sub>7</sub>)随机选取前面4个字,余下的4个字则固定为全“0”或全“1”;当种子密钥K=(k<sub>0</sub>,k<sub>1</sub>,…,k<sub>7</sub>)为5×32比特时,则种子密钥K=(k<sub>0</sub>,k<sub>1</sub>,…,k<sub>7</sub>)随机选取前面5个字,余下的3个字则固定为全“0”或全“1”;当种子密钥K=(k<sub>0</sub>,k<sub>1</sub>,…,k<sub>7</sub>)为6×32比特时,则种子密钥K=(k<sub>0</sub>,k<sub>1</sub>,…,k<sub>7</sub>)随机选取前面6个字,余下的2个字则固定为全“0”或全“1”;当种子密钥K=(k<sub>0</sub>,k<sub>1</sub>,…,k<sub>7</sub>)为7×32比特时,则种子密钥K=(k<sub>0</sub>,k<sub>1</sub>,…,k<sub>7</sub>)随机选取前面7个字,余下的1个字则固定为全“0”或全“1”;当种子密钥K=(k<sub>0</sub>,k<sub>1</sub>,…,k<sub>7</sub>)为8×32比特时,则种子密钥K=(k<sub>0</sub>,k<sub>1</sub>,…,k<sub>7</sub>)随机选取这8个字;所述常量值c=(c<sub>0</sub>,c<sub>1</sub>,c<sub>2</sub>)为固定常数,且用16进制表示为c<sub>0</sub>=6672082A,c<sub>1</sub>=B39E6F35,c<sub>2</sub>=D9D3B52C;(1.2)开辟一个512比特的存储器X,该存储器分为16个字,每个字为32比特,即<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mi>X</mi><mo>=</mo><mfenced open = '(' close = ')'><mtable><mtr><mtd><msub><mi>x</mi><mn>0</mn></msub></mtd><mtd><msub><mi>x</mi><mn>1</mn></msub></mtd><mtd><msub><mi>x</mi><mn>2</mn></msub></mtd><mtd><msub><mi>x</mi><mn>3</mn></msub></mtd></mtr><mtr><mtd><msub><mi>x</mi><mn>4</mn></msub></mtd><mtd><msub><mi>x</mi><mn>5</mn></msub></mtd><mtd><msub><mi>x</mi><mn>6</mn></msub></mtd><mtd><msub><mi>x</mi><mn>7</mn></msub></mtd></mtr><mtr><mtd><msub><mi>x</mi><mn>8</mn></msub></mtd><mtd><msub><mi>x</mi><mn>9</mn></msub></mtd><mtd><msub><mi>x</mi><mn>10</mn></msub></mtd><mtd><msub><mi>x</mi><mn>11</mn></msub></mtd></mtr><mtr><mtd><msub><mi>x</mi><mn>12</mn></msub></mtd><mtd><msub><mi>x</mi><mn>13</mn></msub></mtd><mtd><msub><mi>x</mi><mn>14</mn></msub></mtd><mtd><msub><mi>x</mi><mn>15</mn></msub></mtd></mtr></mtable></mfenced><mo>;</mo></mrow>]]></math><img file="FDA0000779099100000011.GIF" wi="682" he="403" /></maths>(1.3)将种子密钥K、初始向量v、计数向量t和常量值c分别注入存储器X中,即令<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mi>X</mi><mo>=</mo><mfenced open = '(' close = ')'><mtable><mtr><mtd><msub><mi>x</mi><mn>0</mn></msub></mtd><mtd><msub><mi>x</mi><mn>1</mn></msub></mtd><mtd><msub><mi>x</mi><mn>2</mn></msub></mtd><mtd><msub><mi>x</mi><mn>3</mn></msub></mtd></mtr><mtr><mtd><msub><mi>x</mi><mn>4</mn></msub></mtd><mtd><msub><mi>x</mi><mn>5</mn></msub></mtd><mtd><msub><mi>x</mi><mn>6</mn></msub></mtd><mtd><msub><mi>x</mi><mn>7</mn></msub></mtd></mtr><mtr><mtd><msub><mi>x</mi><mn>8</mn></msub></mtd><mtd><msub><mi>x</mi><mn>9</mn></msub></mtd><mtd><msub><mi>x</mi><mn>10</mn></msub></mtd><mtd><msub><mi>x</mi><mn>11</mn></msub></mtd></mtr><mtr><mtd><msub><mi>x</mi><mn>12</mn></msub></mtd><mtd><msub><mi>x</mi><mn>13</mn></msub></mtd><mtd><msub><mi>x</mi><mn>14</mn></msub></mtd><mtd><msub><mi>x</mi><mn>15</mn></msub></mtd></mtr></mtable></mfenced><mo>=</mo><mfenced open = '(' close = ')'><mtable><mtr><mtd><msub><mi>k</mi><mn>0</mn></msub></mtd><mtd><msub><mi>v</mi><mn>1</mn></msub></mtd><mtd><msub><mi>k</mi><mn>6</mn></msub></mtd><mtd><msub><mi>c</mi><mn>0</mn></msub></mtd></mtr><mtr><mtd><msub><mi>k</mi><mn>5</mn></msub></mtd><mtd><msub><mi>k</mi><mn>3</mn></msub></mtd><mtd><msub><mi>c</mi><mn>1</mn></msub></mtd><mtd><msub><mi>t</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><msub><mi>t</mi><mn>0</mn></msub></mtd><mtd><msub><mi>c</mi><mn>2</mn></msub></mtd><mtd><msub><mi>k</mi><mn>1</mn></msub></mtd><mtd><msub><mi>k</mi><mn>7</mn></msub></mtd></mtr><mtr><mtd><msub><mi>v</mi><mn>0</mn></msub></mtd><mtd><msub><mi>k</mi><mn>4</mn></msub></mtd><mtd><msub><mi>v</mi><mn>2</mn></msub></mtd><mtd><msub><mi>k</mi><mn>2</mn></msub></mtd></mtr></mtable></mfenced><mo>;</mo></mrow>]]></math><img file="FDA0000779099100000021.GIF" wi="1168" he="396" /></maths>(2)密钥流生成阶段:(2.1)定义X<sup>r</sup>=round<sup>r</sup>(X),其中round<sup>r</sup>(X)又分为行运算round<sup>odd</sup>(X)和列运算round<sup>even</sup>(X);(2.2)若r为奇数即round<sup>odd</sup>(X)的变化规则为:将存储器X的第一行x=(x<sub>0</sub>,x<sub>1</sub>,x<sub>2</sub>,x<sub>3</sub>)变化到y=(y<sub>0</sub>,y<sub>1</sub>,y<sub>2</sub>,y<sub>3</sub>),有:a<sub>0</sub>=x<sub>0</sub>+x<sub>3</sub>,a<sub>3</sub>=(x<sub>2</sub>+a<sub>0</sub>)&lt;&lt;&lt;3a<sub>2</sub>=x<sub>1</sub>+a<sub>3</sub>,a<sub>1</sub>=(x<sub>2</sub>+a<sub>2</sub>)&lt;&lt;&lt;17<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><msub><mi>y</mi><mn>0</mn></msub><mo>=</mo><mo>&lsqb;</mo><msub><mi>x</mi><mn>0</mn></msub><mo>&CirclePlus;</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>0</mn></msub><mo>+</mo><msub><mi>a</mi><mn>1</mn></msub><mo>)</mo></mrow><mo>&rsqb;</mo><mo>&lt;</mo><mo>&lt;</mo><mo>&lt;</mo><mo>&lsqb;</mo><mi>r</mi><mi> </mi><mi>mod</mi><mn>8</mn><mo>&rsqb;</mo></mrow>]]></math><img file="FDA0000779099100000022.GIF" wi="876" he="93" /></maths><maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><msub><mi>y</mi><mn>1</mn></msub><mo>=</mo><msub><mi>x</mi><mn>1</mn></msub><mo>&CirclePlus;</mo><mo>&lsqb;</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>2</mn></msub><mo>+</mo><msub><mi>y</mi><mn>0</mn></msub><mo>)</mo></mrow><mo>&gt;</mo><mo>&gt;</mo><mo>&gt;</mo><mo>&lsqb;</mo><mi>r</mi><mi> </mi><mi>mod</mi><mn>8</mn><mo>&rsqb;</mo><mo>&rsqb;</mo></mrow>]]></math><img file="FDA0000779099100000023.GIF" wi="877" he="86" /></maths><maths num="0005" id="cmaths0005"><math><![CDATA[<mrow><msub><mi>y</mi><mn>2</mn></msub><mo>=</mo><mo>&lsqb;</mo><msub><mi>x</mi><mn>2</mn></msub><mo>&CirclePlus;</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>3</mn></msub><mo>+</mo><msub><mi>y</mi><mn>1</mn></msub><mo>)</mo></mrow><mo>&rsqb;</mo><mo>&lt;</mo><mo>&lt;</mo><mo>&lt;</mo><mn>5</mn></mrow>]]></math><img file="FDA0000779099100000024.GIF" wi="684" he="91" /></maths><maths num="0006" id="cmaths0006"><math><![CDATA[<mrow><msub><mi>y</mi><mn>3</mn></msub><mo>=</mo><msub><mi>x</mi><mn>3</mn></msub><mo>&CirclePlus;</mo><mo>&lsqb;</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>1</mn></msub><mo>+</mo><msub><mi>y</mi><mn>2</mn></msub><mo>)</mo></mrow><mo>&lt;</mo><mo>&lt;</mo><mo>&lt;</mo><mn>23</mn><mo>&rsqb;</mo><mo>;</mo></mrow>]]></math><img file="FDA0000779099100000025.GIF" wi="902" he="105" /></maths>将存储器X的第二行x=(x<sub>4</sub>,x<sub>5</sub>,x<sub>6</sub>,x<sub>7</sub>)变化到y=(y<sub>4</sub>,y<sub>5</sub>,y<sub>6</sub>,y<sub>7</sub>),有:a<sub>4</sub>=x<sub>4</sub>+x<sub>7</sub>,a<sub>7</sub>=(x<sub>6</sub>+a<sub>4</sub>)&lt;&lt;&lt;3a<sub>6</sub>=x<sub>5</sub>+a<sub>7</sub>,a<sub>5</sub>=(x<sub>6</sub>+a<sub>6</sub>)&lt;&lt;&lt;17<maths num="0007" id="cmaths0007"><math><![CDATA[<mrow><msub><mi>y</mi><mn>4</mn></msub><mo>=</mo><mo>&lsqb;</mo><msub><mi>x</mi><mn>4</mn></msub><mo>&CirclePlus;</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>4</mn></msub><mo>+</mo><msub><mi>a</mi><mn>5</mn></msub><mo>)</mo></mrow><mo>&rsqb;</mo><mo>&lt;</mo><mo>&lt;</mo><mo>&lt;</mo><mo>&lsqb;</mo><mi>r</mi><mi> </mi><mi>mod</mi><mn>8</mn><mo>&rsqb;</mo></mrow>]]></math><img file="FDA0000779099100000026.GIF" wi="883" he="93" /></maths><maths num="0008" id="cmaths0008"><math><![CDATA[<mrow><msub><mi>y</mi><mn>5</mn></msub><mo>=</mo><msub><mi>x</mi><mn>5</mn></msub><mo>&CirclePlus;</mo><mo>&lsqb;</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>6</mn></msub><mo>+</mo><msub><mi>y</mi><mn>4</mn></msub><mo>)</mo></mrow><mo>&gt;</mo><mo>&gt;</mo><mo>&gt;</mo><mo>&lsqb;</mo><mi>r</mi><mi> </mi><mi>mod</mi><mn>8</mn><mo>&rsqb;</mo><mo>&rsqb;</mo></mrow>]]></math><img file="FDA0000779099100000027.GIF" wi="887" he="92" /></maths><maths num="0009" id="cmaths0009"><math><![CDATA[<mrow><msub><mi>y</mi><mn>6</mn></msub><mo>=</mo><mo>&lsqb;</mo><msub><mi>x</mi><mn>6</mn></msub><mo>&CirclePlus;</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>7</mn></msub><mo>+</mo><msub><mi>y</mi><mn>5</mn></msub><mo>)</mo></mrow><mo>&rsqb;</mo><mo>&lt;</mo><mo>&lt;</mo><mo>&lt;</mo><mn>5</mn></mrow>]]></math><img file="FDA0000779099100000028.GIF" wi="688" he="87" /></maths><maths num="0010" id="cmaths0010"><math><![CDATA[<mrow><msub><mi>y</mi><mn>7</mn></msub><mo>=</mo><msub><mi>x</mi><mn>7</mn></msub><mo>&CirclePlus;</mo><mo>&lsqb;</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>5</mn></msub><mo>+</mo><msub><mi>y</mi><mn>6</mn></msub><mo>)</mo></mrow><mo>&lt;</mo><mo>&lt;</mo><mo>&lt;</mo><mn>23</mn><mo>&rsqb;</mo><mo>;</mo></mrow>]]></math><img file="FDA0000779099100000029.GIF" wi="913" he="107" /></maths>将存储器X的第三行x=(x<sub>8</sub>,x<sub>9</sub>,x<sub>10</sub>,x<sub>11</sub>)变化到y=(y<sub>8</sub>,y<sub>9</sub>,y<sub>10</sub>,y<sub>11</sub>),有:a<sub>8</sub>=x<sub>8</sub>+x<sub>11</sub>,a<sub>11</sub>=(x<sub>10</sub>+a<sub>8</sub>)&lt;&lt;&lt;3a<sub>10</sub>=x<sub>9</sub>+a<sub>11</sub>,a<sub>9</sub>=(x<sub>10</sub>+a<sub>10</sub>)&lt;&lt;&lt;17<maths num="0011" id="cmaths0011"><math><![CDATA[<mrow><msub><mi>y</mi><mn>8</mn></msub><mo>=</mo><mo>&lsqb;</mo><msub><mi>x</mi><mn>8</mn></msub><mo>&CirclePlus;</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>8</mn></msub><mo>+</mo><msub><mi>a</mi><mn>9</mn></msub><mo>)</mo></mrow><mo>&rsqb;</mo><mo>&lt;</mo><mo>&lt;</mo><mo>&lt;</mo><mo>&lsqb;</mo><mi>r</mi><mi> </mi><mi>mod</mi><mn>8</mn><mo>&rsqb;</mo></mrow>]]></math><img file="FDA0000779099100000031.GIF" wi="876" he="87" /></maths><maths num="0012" id="cmaths0012"><math><![CDATA[<mrow><msub><mi>y</mi><mn>9</mn></msub><mo>=</mo><msub><mi>x</mi><mn>9</mn></msub><mo>&CirclePlus;</mo><mo>&lsqb;</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>10</mn></msub><mo>+</mo><msub><mi>y</mi><mn>8</mn></msub><mo>)</mo></mrow><mo>&gt;</mo><mo>&gt;</mo><mo>&gt;</mo><mo>&lsqb;</mo><mi>r</mi><mi> </mi><mi>mod</mi><mn>8</mn><mo>&rsqb;</mo><mo>&rsqb;</mo></mrow>]]></math><img file="FDA0000779099100000032.GIF" wi="905" he="91" /></maths><maths num="0013" id="cmaths0013"><math><![CDATA[<mrow><msub><mi>y</mi><mn>10</mn></msub><mo>=</mo><mo>&lsqb;</mo><msub><mi>x</mi><mn>10</mn></msub><mo>&CirclePlus;</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>11</mn></msub><mo>+</mo><msub><mi>y</mi><mn>9</mn></msub><mo>)</mo></mrow><mo>&rsqb;</mo><mo>&lt;</mo><mo>&lt;</mo><mo>&lt;</mo><mn>5</mn></mrow>]]></math><img file="FDA0000779099100000033.GIF" wi="733" he="93" /></maths><maths num="0014" id="cmaths0014"><math><![CDATA[<mrow><msub><mi>y</mi><mn>11</mn></msub><mo>=</mo><msub><mi>x</mi><mn>11</mn></msub><mo>&CirclePlus;</mo><mo>&lsqb;</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>9</mn></msub><mo>+</mo><msub><mi>y</mi><mn>10</mn></msub><mo>)</mo></mrow><mo>&lt;</mo><mo>&lt;</mo><mo>&lt;</mo><mn>23</mn><mo>&rsqb;</mo><mo>;</mo></mrow>]]></math><img file="FDA0000779099100000034.GIF" wi="958" he="106" /></maths>将存储器X的第四行x=(x<sub>12</sub>,x<sub>13</sub>,x<sub>14</sub>,x<sub>15</sub>)变化到y=(y<sub>12</sub>,y<sub>13</sub>,y<sub>14</sub>,y<sub>15</sub>),有:a<sub>12</sub>=x<sub>12</sub>+x<sub>15</sub>,a<sub>15</sub>=(x<sub>14</sub>+a<sub>12</sub>)&lt;&lt;&lt;3a<sub>14</sub>=x<sub>13</sub>+a<sub>15</sub>,a<sub>13</sub>=(x<sub>14</sub>+a<sub>14</sub>)&lt;&lt;&lt;17<maths num="0015" id="cmaths0015"><math><![CDATA[<mrow><msub><mi>y</mi><mn>12</mn></msub><mo>=</mo><mo>&lsqb;</mo><msub><mi>x</mi><mn>12</mn></msub><mo>&CirclePlus;</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>12</mn></msub><mo>+</mo><msub><mi>a</mi><mn>13</mn></msub><mo>)</mo></mrow><mo>&rsqb;</mo><mo>&lt;</mo><mo>&lt;</mo><mo>&lt;</mo><mo>&lsqb;</mo><mi>r</mi><mi> </mi><mi>mod</mi><mn>8</mn><mo>&rsqb;</mo></mrow>]]></math><img file="FDA0000779099100000035.GIF" wi="944" he="93" /></maths><maths num="0016" id="cmaths0016"><math><![CDATA[<mrow><msub><mi>y</mi><mn>13</mn></msub><mo>=</mo><msub><mi>x</mi><mn>13</mn></msub><mo>&CirclePlus;</mo><mo>&lsqb;</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>14</mn></msub><mo>+</mo><msub><mi>y</mi><mn>12</mn></msub><mo>)</mo></mrow><mo>&gt;</mo><mo>&gt;</mo><mo>&gt;</mo><mo>&lsqb;</mo><mi>r</mi><mi> </mi><mi>mod</mi><mn>8</mn><mo>&rsqb;</mo><mo>&rsqb;</mo></mrow>]]></math><img file="FDA0000779099100000036.GIF" wi="949" he="87" /></maths><maths num="0017" id="cmaths0017"><math><![CDATA[<mrow><msub><mi>y</mi><mn>14</mn></msub><mo>=</mo><mo>&lsqb;</mo><msub><mi>x</mi><mn>14</mn></msub><mo>&CirclePlus;</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>15</mn></msub><mo>+</mo><msub><mi>y</mi><mn>13</mn></msub><mo>)</mo></mrow><mo>&rsqb;</mo><mo>&lt;</mo><mo>&lt;</mo><mo>&lt;</mo><mn>5</mn></mrow>]]></math><img file="FDA0000779099100000037.GIF" wi="751" he="94" /></maths><maths num="0018" id="cmaths0018"><math><![CDATA[<mrow><msub><mi>y</mi><mn>15</mn></msub><mo>=</mo><msub><mi>x</mi><mn>15</mn></msub><mo>&CirclePlus;</mo><mo>&lsqb;</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>13</mn></msub><mo>+</mo><msub><mi>y</mi><mn>14</mn></msub><mo>)</mo></mrow><mo>&lt;</mo><mo>&lt;</mo><mo>&lt;</mo><mn>23</mn><mo>&rsqb;</mo><mo>;</mo></mrow>]]></math><img file="FDA0000779099100000038.GIF" wi="986" he="113" /></maths>上述,+表示mod2<sup>32</sup>运算,<img file="FDA0000779099100000039.GIF" wi="57" he="61" />表示mod2运算,&lt;&lt;&lt;表示左循环移位,&gt;&gt;&gt;表示右循环移位;(2.3)若r为偶数(即round<sup>even</sup>(X))的变化规则为:将存储器X的第一列x=(x<sub>0</sub>,x<sub>4</sub>,x<sub>8</sub>,x<sub>12</sub>)变化到y=(y<sub>0</sub>,y<sub>4</sub>,y<sub>8</sub>,y<sub>12</sub>),有:a<sub>0</sub>=x<sub>0</sub>+x<sub>12</sub>,a<sub>3</sub>=(x<sub>8</sub>+a<sub>0</sub>)&lt;&lt;&lt;3a<sub>2</sub>=x<sub>4</sub>+a<sub>3</sub>,a<sub>1</sub>=(x<sub>8</sub>+a<sub>2</sub>)&lt;&lt;&lt;17<maths num="0019" id="cmaths0019"><math><![CDATA[<mrow><msub><mi>y</mi><mn>0</mn></msub><mo>=</mo><mo>&lsqb;</mo><msub><mi>x</mi><mn>0</mn></msub><mo>&CirclePlus;</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>0</mn></msub><mo>+</mo><msub><mi>a</mi><mn>1</mn></msub><mo>)</mo></mrow><mo>&rsqb;</mo><mo>&lt;</mo><mo>&lt;</mo><mo>&lt;</mo><mo>&lsqb;</mo><mi>r</mi><mi> </mi><mi>mod</mi><mn>8</mn><mo>&rsqb;</mo></mrow>]]></math><img file="FDA00007790991000000310.GIF" wi="879" he="92" /></maths><maths num="0020" id="cmaths0020"><math><![CDATA[<mrow><msub><mi>y</mi><mn>4</mn></msub><mo>=</mo><msub><mi>x</mi><mn>4</mn></msub><mo>&CirclePlus;</mo><mo>&lsqb;</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>2</mn></msub><mo>+</mo><msub><mi>y</mi><mn>0</mn></msub><mo>)</mo></mrow><mo>&gt;</mo><mo>&gt;</mo><mo>&gt;</mo><mo>&lsqb;</mo><mi>r</mi><mi> </mi><mi>mod</mi><mn>8</mn><mo>&rsqb;</mo><mo>&rsqb;</mo></mrow>]]></math><img file="FDA00007790991000000311.GIF" wi="893" he="86" /></maths><maths num="0021" id="cmaths0021"><math><![CDATA[<mrow><msub><mi>y</mi><mn>8</mn></msub><mo>=</mo><mo>&lsqb;</mo><msub><mi>x</mi><mn>8</mn></msub><mo>&CirclePlus;</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>3</mn></msub><mo>+</mo><msub><mi>y</mi><mn>4</mn></msub><mo>)</mo></mrow><mo>&rsqb;</mo><mo>&lt;</mo><mo>&lt;</mo><mo>&lt;</mo><mn>5</mn></mrow>]]></math><img file="FDA00007790991000000312.GIF" wi="687" he="93" /></maths><maths num="0022" id="cmaths0022"><math><![CDATA[<mrow><msub><mi>y</mi><mn>12</mn></msub><mo>=</mo><msub><mi>x</mi><mn>12</mn></msub><mo>&CirclePlus;</mo><mo>&lsqb;</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>1</mn></msub><mo>+</mo><msub><mi>y</mi><mn>8</mn></msub><mo>)</mo></mrow><mo>&lt;</mo><mo>&lt;</mo><mo>&lt;</mo><mn>23</mn><mo>&rsqb;</mo><mo>;</mo></mrow>]]></math><img file="FDA00007790991000000313.GIF" wi="922" he="107" /></maths>将存储器X的第二列x=(x<sub>1</sub>,x<sub>5</sub>,x<sub>9</sub>,x<sub>13</sub>)变化到y=(y<sub>1</sub>,y<sub>5</sub>,y<sub>9</sub>,y<sub>13</sub>),有:a<sub>4</sub>=x<sub>1</sub>+x<sub>13</sub>,a<sub>7</sub>=(x<sub>9</sub>+a<sub>4</sub>)&lt;&lt;&lt;3a<sub>6</sub>=x<sub>5</sub>+a<sub>7</sub>,a<sub>5</sub>=(x<sub>9</sub>+a<sub>6</sub>)&lt;&lt;&lt;17<maths num="0023" id="cmaths0023"><math><![CDATA[<mrow><msub><mi>y</mi><mn>1</mn></msub><mo>=</mo><mo>&lsqb;</mo><msub><mi>x</mi><mn>1</mn></msub><mo>&CirclePlus;</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>4</mn></msub><mo>+</mo><msub><mi>a</mi><mn>5</mn></msub><mo>)</mo></mrow><mo>&rsqb;</mo><mo>&lt;</mo><mo>&lt;</mo><mo>&lt;</mo><mo>&lsqb;</mo><mi>r</mi><mi> </mi><mi>mod</mi><mn>8</mn><mo>&rsqb;</mo></mrow>]]></math><img file="FDA0000779099100000041.GIF" wi="869" he="86" /></maths><maths num="0024" id="cmaths0024"><math><![CDATA[<mrow><msub><mi>y</mi><mn>5</mn></msub><mo>=</mo><msub><mi>x</mi><mn>5</mn></msub><mo>&CirclePlus;</mo><mo>&lsqb;</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>6</mn></msub><mo>+</mo><msub><mi>y</mi><mn>1</mn></msub><mo>)</mo></mrow><mo>&gt;</mo><mo>&gt;</mo><mo>&gt;</mo><mo>&lsqb;</mo><mi>r</mi><mi> </mi><mi>mod</mi><mn>8</mn><mo>&rsqb;</mo><mo>&rsqb;</mo></mrow>]]></math><img file="FDA0000779099100000042.GIF" wi="879" he="89" /></maths><maths num="0025" id="cmaths0025"><math><![CDATA[<mrow><msub><mi>y</mi><mn>9</mn></msub><mo>=</mo><mo>&lsqb;</mo><msub><mi>x</mi><mn>9</mn></msub><mo>&CirclePlus;</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>7</mn></msub><mo>+</mo><msub><mi>y</mi><mn>5</mn></msub><mo>)</mo></mrow><mo>&rsqb;</mo><mo>&lt;</mo><mo>&lt;</mo><mo>&lt;</mo><mn>5</mn></mrow>]]></math><img file="FDA0000779099100000043.GIF" wi="686" he="93" /></maths><maths num="0026" id="cmaths0026"><math><![CDATA[<mrow><msub><mi>y</mi><mn>13</mn></msub><mo>=</mo><msub><mi>x</mi><mn>13</mn></msub><mo>&CirclePlus;</mo><mo>&lsqb;</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>5</mn></msub><mo>+</mo><msub><mi>y</mi><mn>9</mn></msub><mo>)</mo></mrow><mo>&lt;</mo><mo>&lt;</mo><mo>&lt;</mo><mn>23</mn><mo>&rsqb;</mo><mo>;</mo></mrow>]]></math><img file="FDA0000779099100000044.GIF" wi="907" he="106" /></maths>将存储器X的第三列x=(x<sub>2</sub>,x<sub>6</sub>,x<sub>10</sub>,x<sub>14</sub>)变化到y=(y<sub>2</sub>,y<sub>6</sub>,y<sub>10</sub>,y<sub>14</sub>),有:a<sub>8</sub>=x<sub>2</sub>+x<sub>14</sub>,a<sub>11</sub>=(x<sub>10</sub>+a<sub>8</sub>)&lt;&lt;&lt;3a<sub>10</sub>=x<sub>6</sub>+a<sub>11</sub>,a<sub>9</sub>=(x<sub>10</sub>+a<sub>10</sub>)&lt;&lt;&lt;17<maths num="0027" id="cmaths0027"><math><![CDATA[<mrow><msub><mi>y</mi><mn>2</mn></msub><mo>=</mo><mo>&lsqb;</mo><msub><mi>x</mi><mn>2</mn></msub><mo>&CirclePlus;</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>8</mn></msub><mo>+</mo><msub><mi>a</mi><mn>9</mn></msub><mo>)</mo></mrow><mo>&rsqb;</mo><mo>&lt;</mo><mo>&lt;</mo><mo>&lt;</mo><mo>&lsqb;</mo><mi>r</mi><mi> </mi><mi>mod</mi><mn>8</mn><mo>&rsqb;</mo></mrow>]]></math><img file="FDA0000779099100000045.GIF" wi="884" he="91" /></maths><maths num="0028" id="cmaths0028"><math><![CDATA[<mrow><msub><mi>y</mi><mn>6</mn></msub><mo>=</mo><msub><mi>x</mi><mn>6</mn></msub><mo>&CirclePlus;</mo><mo>&lsqb;</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>10</mn></msub><mo>+</mo><msub><mi>y</mi><mn>2</mn></msub><mo>)</mo></mrow><mo>&gt;</mo><mo>&gt;</mo><mo>&gt;</mo><mo>&lsqb;</mo><mi>r</mi><mi> </mi><mi>mod</mi><mn>8</mn><mo>&rsqb;</mo><mo>&rsqb;</mo></mrow>]]></math><img file="FDA0000779099100000046.GIF" wi="910" he="86" /></maths><maths num="0029" id="cmaths0029"><math><![CDATA[<mrow><msub><mi>y</mi><mn>10</mn></msub><mo>=</mo><mo>&lsqb;</mo><msub><mi>x</mi><mn>10</mn></msub><mo>&CirclePlus;</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>11</mn></msub><mo>+</mo><msub><mi>y</mi><mn>6</mn></msub><mo>)</mo></mrow><mo>&rsqb;</mo><mo>&lt;</mo><mo>&lt;</mo><mo>&lt;</mo><mn>5</mn></mrow>]]></math><img file="FDA0000779099100000047.GIF" wi="734" he="91" /></maths><maths num="0030" id="cmaths0030"><math><![CDATA[<mrow><msub><mi>y</mi><mn>14</mn></msub><mo>=</mo><msub><mi>x</mi><mn>14</mn></msub><mo>&CirclePlus;</mo><mo>&lsqb;</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>9</mn></msub><mo>+</mo><msub><mi>y</mi><mn>10</mn></msub><mo>)</mo></mrow><mo>&lt;</mo><mo>&lt;</mo><mo>&lt;</mo><mn>23</mn><mo>&rsqb;</mo><mo>;</mo></mrow>]]></math><img file="FDA0000779099100000048.GIF" wi="954" he="113" /></maths>将存储器X的第四列x=(x<sub>3</sub>,x<sub>7</sub>,x<sub>11</sub>,x<sub>15</sub>)变化到y=(y<sub>3</sub>,y<sub>7</sub>,y<sub>11</sub>,y<sub>15</sub>),有:a<sub>12</sub>=x<sub>3</sub>+x<sub>15</sub>,a<sub>15</sub>=(x<sub>11</sub>+a<sub>12</sub>)&lt;&lt;&lt;3a<sub>14</sub>=x<sub>7</sub>+a<sub>15</sub>,a<sub>13</sub>=(x<sub>11</sub>+a<sub>14</sub>)&lt;&lt;&lt;17<maths num="0031" id="cmaths0031"><math><![CDATA[<mrow><msub><mi>y</mi><mn>3</mn></msub><mo>=</mo><mo>&lsqb;</mo><msub><mi>x</mi><mn>3</mn></msub><mo>&CirclePlus;</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>12</mn></msub><mo>+</mo><msub><mi>a</mi><mn>13</mn></msub><mo>)</mo></mrow><mo>&rsqb;</mo><mo>&lt;</mo><mo>&lt;</mo><mo>&lt;</mo><mo>&lsqb;</mo><mi>r</mi><mi> </mi><mi>mod</mi><mn>8</mn><mo>&rsqb;</mo></mrow>]]></math><img file="FDA0000779099100000049.GIF" wi="911" he="89" /></maths><maths num="0032" id="cmaths0032"><math><![CDATA[<mrow><msub><mi>y</mi><mn>7</mn></msub><mo>=</mo><msub><mi>x</mi><mn>7</mn></msub><mo>&CirclePlus;</mo><mo>&lsqb;</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>14</mn></msub><mo>+</mo><msub><mi>y</mi><mn>3</mn></msub><mo>)</mo></mrow><mo>&gt;</mo><mo>&gt;</mo><mo>&gt;</mo><mo>&lsqb;</mo><mi>r</mi><mi> </mi><mi>mod</mi><mn>8</mn><mo>&rsqb;</mo><mo>&rsqb;</mo></mrow>]]></math><img file="FDA00007790991000000410.GIF" wi="906" he="92" /></maths><maths num="0033" id="cmaths0033"><math><![CDATA[<mrow><msub><mi>y</mi><mn>11</mn></msub><mo>=</mo><mo>&lsqb;</mo><msub><mi>x</mi><mn>11</mn></msub><mo>&CirclePlus;</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>15</mn></msub><mo>+</mo><msub><mi>y</mi><mn>13</mn></msub><mo>)</mo></mrow><mo>&rsqb;</mo><mo>&lt;</mo><mo>&lt;</mo><mo>&lt;</mo><mn>5</mn></mrow>]]></math><img file="FDA00007790991000000411.GIF" wi="744" he="86" /></maths><maths num="0034" id="cmaths0034"><math><![CDATA[<mrow><msub><mi>y</mi><mn>15</mn></msub><mo>=</mo><msub><mi>x</mi><mn>15</mn></msub><mo>&CirclePlus;</mo><mo>&lsqb;</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>13</mn></msub><mo>+</mo><msub><mi>y</mi><mn>11</mn></msub><mo>)</mo></mrow><mo>&lt;</mo><mo>&lt;</mo><mo>&lt;</mo><mn>23</mn><mo>&rsqb;</mo><mo>;</mo></mrow>]]></math><img file="FDA00007790991000000412.GIF" wi="969" he="110" /></maths>(2.4)根据步骤(2.2)和(2.3)所述变化规则计算X=round(X),X<sup>7</sup>=round<sup>7</sup>(X)和X<sup>15</sup>=round<sup>15</sup>(X),并输出计数向量t=(t<sub>0</sub>,t<sub>1</sub>)为t时的密钥流Z<sup>(t)</sup>=X+X<sup>7</sup>+X<sup>15</sup>;(2.5)将计数向量t=(t<sub>0</sub>,t<sub>1</sub>)更新为t+1,此时存储器X的状态更新为X<sub>1</sub>,重复步骤(2.1)~(2.4),即可获得计数向量t=(t<sub>0</sub>,t<sub>1</sub>)为t+1时的密钥流Z<sup>(t+1)</sup>=X<sub>1</sub>+X<sub>1</sub><sup>7</sup>+X<sub>1</sub><sup>15</sup>;将计数向量t=(t<sub>0</sub>,t<sub>1</sub>)更新为t+2,此时存储器X的状态更新为X<sub>2</sub>,重复步骤(2.1)~(2.4),即可获得计数向量t=(t<sub>0</sub>,t<sub>1</sub>)为t+2时的密钥流Z<sup>(t+2)</sup>=X<sub>2</sub>+X<sub>2</sub><sup>7</sup>+X<sub>2</sub><sup>15</sup>;……将计数向量t=(t<sub>0</sub>,t<sub>1</sub>)更新为t+i,其中2<i<n,此时存储器X的状态更新为X<sub>i</sub>,重复步骤(2.1)~(2.4),即可获得计数向量t=(t<sub>0</sub>,t<sub>1</sub>)为t+i时的密钥流Z<sup>(t+i)</sup>=X<sub>i</sub>+X<sub>i</sub><sup>7</sup>+X<sub>i</sub><sup>15</sup>;……将计数向量t=(t<sub>0</sub>,t<sub>1</sub>)更新为t+n,其中n为所需的密钥流个数,此时存储器X的状态更新为X<sub>n</sub>,重复步骤(2.1)~(2.4),即可获得计数向量t=(t<sub>0</sub>,t<sub>1</sub>)为t+n时的密钥流Z<sup>(t+n)</sup>=X<sub>n</sub>+X<sub>n</sub><sup>7</sup>+X<sub>n</sub><sup>15</sup>;(3)加密阶段:<img file="FDA0000779099100000051.GIF" wi="250" he="75" />其中Y<sub>i</sub>为获得的密文,X<sub>i</sub>为待加密的明文,Z<sub>i</sub>为密钥流。
地址 541004 广西壮族自治区桂林市金鸡路1号