private void geneKey() { this.ikey=new byte[6][8]; byte[] PC1ShiftOut,PC2Out; int[] shiftCount= {1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1}; PC1ShiftOut=PC1(this.key); for(int i=0;i<6;i++) { PC1ShiftOut=shift(PC1ShiftOut, shiftCount[i]); PC2Out=PC2(PC1ShiftOut); System.arraycopy(PC2Out, 0, this.ikey[i], 0, 8); } }代码的意思
时间: 2024-03-30 18:36:09 浏览: 89
iKey——信息时代,芝麻开门.pdf
这段代码是一个名为geneKey的私有方法,它没有任何参数或返回值。该方法的主要作用是生成DES算法的子密钥。
具体来说,该方法使用了两个辅助方法PC1和PC2,分别用于对原始密钥进行置换和压缩。首先,该方法将原始密钥进行PC1置换,得到一个长度为56的比特串。然后,它使用一个长度为16的数组shiftCount来指定每一轮的位移数。接下来,该方法对PC1置换后的结果进行循环位移,并使用PC2方法将每一轮位移后的结果进行压缩,得到48位的子密钥。最后,该方法将每一轮生成的子密钥存储在一个6x8的二维byte数组ikey中。
需要注意的是,该方法并没有返回子密钥数组ikey,而是将其存储在了对象的成员变量中。因此,要使用生成的子密钥,需要通过调用对象的getIkey方法来获取。
阅读全文