【发布时间】:2013-12-04 03:59:15
【问题描述】:
我有一个函数,它接受一个 long 值作为输入并返回一个 long 值。
static long MyBox(long S) // input is a 48-bit integer stored in 64-bit signed "long"
{
// Split I into eight 6-bit chunks
int Sa=(int)((S>>42));
int Sb=(int)((S>>36)&63);
int Sc=(int)((S>>30)&63);
int Sd=(int)((S>>24)&63);
int Se=(int)((S>>18)&63);
int Sf=(int)((S>>12)&63);
int Sg=(int)((S>>6)&63);
int Sh=(int)(S&63);
// Apply the S-boxes
byte Oa=S1Table[Sa];
byte Ob=S2Table[Sb];
byte Oc=S3Table[Sc];
byte Od=S4Table[Sd];
byte Oe=S5Table[Se];
byte Of=S6Table[Sf];
byte Og=S7Table[Sg];
byte Oh=S8Table[Sh];
// Combine answers into 32-bit output stored in 64-bit signed "long"
long O=(long)Oa<<28 | (long)Ob<<24 | (long)Oc<<20 | (long)Od<<16 | (long)Oe<<12 | (long)Of<<8 | (long)Og<<4 | (long)Oh;
return(O);
}
我将一个变量传递给这个方法,但是我得到了 ArrayIndexOutOfBoundsException。有人会知道为什么吗?这就是我通过它的方式。
long testPassing=0x1234567887654321L;
long result = MyBox (testPassing);
在这一步之后,我得到了一个 arrayoutofbounds 异常。
任何帮助将不胜感激!谢谢你。
【问题讨论】:
-
在这一步之后我得到一个arrayoutofbounds异常然后我们想在这一步之后看看。
-
你能发布异常吗?您发布的代码中没有数组,所以我会感到惊讶。
-
线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常:DESPrac.SBox 处的 298261(DESPrac.java:131)
-
@SotiriosDelimanolis 我的意思是在步骤结果中我得到了错误。这一步之后我没有别的东西了。
-
您是否尝试过打印出您的索引值?它们显然超出了界限。
标签: java security hex long-integer bit