AES加密过程中的列混合操作中,需要用到GF(2的8次方)上的域元素的乘,已经写成了方法
相关代码如下:
public int Multi(int a,int b)
{
int[] temp = new int[8];
int[] flag = new int[8];
int c = b;
for(int i= 0;i < 8;i++)
{
int c1,c2;
c1 = c / 2;
c2 = c % 2;
if(c2 == 1)
flag[i] = 1;
else
flag[i] = 0;
c = c1;
if(i==0)
temp[i] = a;
else{
temp[i] = temp[i-1]*2;
if(temp[i]>255)
temp[i] = (temp[i]%256)^27;
}
}
a = 0;
for(int i = 0; i < 8; i++)
a = a^(temp[i]*flag[i]);
return a;
}
此方法的目标就是实现a与b的域乘。
a和b都是十进制数,最后返回的a是a与b域乘的结果。
域乘的相关数学知识如下链接
http://wenku.baidu.com/view/feda71bd960590c69ec376fd.html
希望有懂这方面的前辈指点一下这个方法是如何实现这个功能的。解释这段代码的算法
最好在代码上添上通俗易懂的注释,谢谢!
相关代码如下:
public int Multi(int a,int b)
{
int[] temp = new int[8];
int[] flag = new int[8];
int c = b;
for(int i= 0;i < 8;i++)
{
int c1,c2;
c1 = c / 2;
c2 = c % 2;
if(c2 == 1)
flag[i] = 1;
else
flag[i] = 0;
c = c1;
if(i==0)
temp[i] = a;
else{
temp[i] = temp[i-1]*2;
if(temp[i]>255)
temp[i] = (temp[i]%256)^27;
}
}
a = 0;
for(int i = 0; i < 8; i++)
a = a^(temp[i]*flag[i]);
return a;
}
此方法的目标就是实现a与b的域乘。
a和b都是十进制数,最后返回的a是a与b域乘的结果。
域乘的相关数学知识如下链接
http://wenku.baidu.com/view/feda71bd960590c69ec376fd.html
希望有懂这方面的前辈指点一下这个方法是如何实现这个功能的。解释这段代码的算法
最好在代码上添上通俗易懂的注释,谢谢!
解决方案 »
- JDBC连接MSSQL2008 没反应 不报错 急急急在线等!
- 麻烦推荐两本学习Struts 2.0+Spring+Hibernate的书,谢谢啦。
- eclipse如何开发axis的webservice
- 请教一个HQL查询语句的写法
- 谁能发一个struts+hibernate+spring的例子给我,非常感谢
- hibernate查询double数据,映射到实体变成科学表达式
- JMS 如何实现在java中通过WINDOWS2000server中的消息队列向另外一台主机发送消息?
- 請問java.util.Vector是什麼包.主要起什麼作用
- 标签<th > 和<td>的区别 怎么jstl标签循环遍历的时候第一行用<th> 下面遍历用<td>
- 求助:webapi传输大文本数据怎么提升提速,比如提供小说按章节下载大文本内容
- 我的myclipse启动不了了,启动后总弹出一个对话框,说:jvm terminated Exit code=1
- hibernate多对多问题
AES 算列混合时生成元为03的反对数表的作用是什么??请教大神!!谢谢指教
private static int[] inLogTable =
{
1,3,5,15,17,51,85,255,26,46,114,150,161,248,19,53,
95,225,56,72,216,115,149,164,247,2,6,10,30,34,102,170,
229,52,92,228,55,89,235,38,106,190,217,112,144,171,230,49,
83,245,4,12,20,60,68,204,79,209,104,184,211,110,178,205,
76,212,103,169,224,59,77,215,98,166,241,8,24,40,120,136,
131,158,185,208,107,189,220,127,129,152,179,206,73,219,118,154,
181,196,87,249,16,48,80,240,11,29,39,105,187,214,97,163,
254,25,43,125,135,146,173,236,47,113,147,174,233,32,96,160,
251,22,58,78,210,109,183,194,93,231,50,86,250,21,63,65,
195,94,226,61,71,201,64,192,91,237,44,116,156,191,218,117,
159,186,213,100,172,239,42,126,130,157,188,223,122,142,137,128,
155,182,193,88,232,35,101,175,234,37,111,177,200,67,197,84 ,
252,31,33,99,165,244,7,9,27,45,119,153,176,203,70,202,
69,207,74,222,121,139,134,145,168,227,62,66,198,81,243,14,
18,54,90,238,41,123,141,140,143,138,133,148,167,242,13,23,
57,75,221,124,132,151,162,253,28,36,108,180,199,82,246,1
};