📄 des算法详述.htm
字号:
2];<BR>worka[ 4] = buffer[ 3];<BR>worka[ 5] = buffer[ 4];<BR>worka[ 6] =
buffer[ 3];<BR>worka[ 7] = buffer[ 4];<BR>worka[ 8] = buffer[
5];<BR>worka[ 9] = buffer[ 6];<BR>worka[10] = buffer[ 7];<BR>worka[11] =
buffer[ 8];<BR>worka[12] = buffer[ 7];<BR>worka[13] = buffer[
8];<BR>worka[14] = buffer[ 9];<BR>worka[15] = buffer[10];<BR>worka[16] =
buffer[11];<BR>worka[17] = buffer[12];<BR>worka[18] =
buffer[11];<BR>worka[19] = buffer[12];<BR>worka[20] =
buffer[13];<BR>worka[21] = buffer[14];<BR>worka[22] =
buffer[15];<BR>worka[23] = buffer[16];<BR>worka[24] =
buffer[15];<BR>worka[25] = buffer[16];<BR>worka[26] =
buffer[17];<BR>worka[27] = buffer[18];<BR>worka[28] =
buffer[19];<BR>worka[29] = buffer[20];<BR>worka[30] =
buffer[19];<BR>worka[31] = buffer[20];<BR>worka[32] =
buffer[21];<BR>worka[33] = buffer[22];<BR>worka[34] =
buffer[23];<BR>worka[35] = buffer[24];<BR>worka[36] =
buffer[23];<BR>worka[37] = buffer[24];<BR>worka[38] =
buffer[25];<BR>worka[39] = buffer[26];<BR>worka[40] =
buffer[27];<BR>worka[41] = buffer[28];<BR>worka[42] =
buffer[27];<BR>worka[43] = buffer[28];<BR>worka[44] =
buffer[29];<BR>worka[45] = buffer[30];<BR>worka[46] =
buffer[31];<BR>worka[47] = buffer[ 0];<BR><BR>/* KS Function Begin
*/<BR>if (flg) {<BR>nbrofshift = shift[iter-1];<BR>for (i = 0; i <
(int) nbrofshift; i++) {<BR>temp1 = kwork[0];<BR>temp2 = kwork[28];<BR>for
(j = 0; j < 27; j++) {<BR>kwork[j] = kwork[j+1];<BR>kwork[j+28] =
kwork[j+29];<BR>}<BR>kwork[27] = temp1;<BR>kwork[55] = temp2;<BR>}<BR>}
else if (iter > 1) {<BR>nbrofshift = shift[17-iter];<BR>for (i = 0; i
< (int) nbrofshift; i++) {<BR>temp1 = kwork[27];<BR>temp2 =
kwork[55];<BR>for (j = 27; j > 0; j--) {<BR>kwork[j] =
kwork[j-1];<BR>kwork[j+28] = kwork[j+27];<BR>}<BR>kwork[0] =
temp1;<BR>kwork[28] = temp2;<BR>}<BR>}<BR><BR>/* Permute kwork - PC2
*/<BR>kn[ 0] = kwork[13];<BR>kn[ 1] = kwork[16];<BR>kn[ 2] =
kwork[10];<BR>kn[ 3] = kwork[23];<BR>kn[ 4] = kwork[ 0];<BR>kn[ 5] =
kwork[ 4];<BR>kn[ 6] = kwork[ 2];<BR>kn[ 7] = kwork[27];<BR>kn[ 8] =
kwork[14];<BR>kn[ 9] = kwork[ 5];<BR>kn[10] = kwork[20];<BR>kn[11] =
kwork[ 9];<BR>kn[12] = kwork[22];<BR>kn[13] = kwork[18];<BR>kn[14] =
kwork[11];<BR>kn[15] = kwork[ 3];<BR>kn[16] = kwork[25];<BR>kn[17] =
kwork[ 7];<BR>kn[18] = kwork[15];<BR>kn[19] = kwork[ 6];<BR>kn[20] =
kwork[26];<BR>kn[21] = kwork[19];<BR>kn[22] = kwork[12];<BR>kn[23] =
kwork[ 1];<BR>kn[24] = kwork[40];<BR>kn[25] = kwork[51];<BR>kn[26] =
kwork[30];<BR>kn[27] = kwork[36];<BR>kn[28] = kwork[46];<BR>kn[29] =
kwork[54];<BR>kn[30] = kwork[29];<BR>kn[31] = kwork[39];<BR>kn[32] =
kwork[50];<BR>kn[33] = kwork[44];<BR>kn[34] = kwork[32];<BR>kn[35] =
kwork[47];<BR>kn[36] = kwork[43];<BR>kn[37] = kwork[48];<BR>kn[38] =
kwork[38];<BR>kn[39] = kwork[55];<BR>kn[40] = kwork[33];<BR>kn[41] =
kwork[52];<BR>kn[42] = kwork[45];<BR>kn[43] = kwork[41];<BR>kn[44] =
kwork[49];<BR>kn[45] = kwork[35];<BR>kn[46] = kwork[28];<BR>kn[47] =
kwork[31];<BR>/* KS Function End */<BR><BR>/* worka XOR kn */<BR>for (i =
0; i < 48; i++)<BR>worka[i] = worka[i] ^ kn[i];<BR><BR>/* 8 s-functions
*/<BR>valindex = s1[2*worka[ 0]+worka[ 5]]<BR>[2*(2*(2*worka[ 1]+worka[
2])+<BR>worka[ 3])+worka[ 4]];<BR>valindex = valindex * 4;<BR>kn[ 0] =
binary[0+valindex];<BR>kn[ 1] = binary[1+valindex];<BR>kn[ 2] =
binary[2+valindex];<BR>kn[ 3] = binary[3+valindex];<BR>valindex =
s2[2*worka[ 6]+worka[11]]<BR>[2*(2*(2*worka[ 7]+worka[ 8])+<BR>worka[
9])+worka[10]];<BR>valindex = valindex * 4;<BR>kn[ 4] =
binary[0+valindex];<BR>kn[ 5] = binary[1+valindex];<BR>kn[ 6] =
binary[2+valindex];<BR>kn[ 7] = binary[3+valindex];<BR>valindex =
s3[2*worka[12]+worka[17]]<BR>[2*(2*(2*worka[13]+worka[14])+<BR>worka[15])+worka[16]];<BR>valindex
= valindex * 4;<BR>kn[ 8] = binary[0+valindex];<BR>kn[ 9] =
binary[1+valindex];<BR>kn[10] = binary[2+valindex];<BR>kn[11] =
binary[3+valindex];<BR>valindex =
s4[2*worka[18]+worka[23]]<BR>[2*(2*(2*worka[19]+worka[20])+<BR>worka[21])+worka[22]];<BR>valindex
= valindex * 4;<BR>kn[12] = binary[0+valindex];<BR>kn[13] =
binary[1+valindex];<BR>kn[14] = binary[2+valindex];<BR>kn[15] =
binary[3+valindex];<BR>valindex =
s5[2*worka[24]+worka[29]]<BR>[2*(2*(2*worka[25]+worka[26])+<BR>worka[27])+worka[28]];<BR>valindex
= valindex * 4;<BR>kn[16] = binary[0+valindex];<BR>kn[17] =
binary[1+valindex];<BR>kn[18] = binary[2+valindex];<BR>kn[19] =
binary[3+valindex];<BR>valindex =
s6[2*worka[30]+worka[35]]<BR>[2*(2*(2*worka[31]+worka[32])+<BR>worka[33])+worka[34]];<BR>valindex
= valindex * 4;<BR>kn[20] = binary[0+valindex];<BR>kn[21] =
binary[1+valindex];<BR>kn[22] = binary[2+valindex];<BR>kn[23] =
binary[3+valindex];<BR>valindex =
s7[2*worka[36]+worka[41]]<BR>[2*(2*(2*worka[37]+worka[38])+<BR>worka[39])+worka[40]];<BR>valindex
= valindex * 4;<BR>kn[24] = binary[0+valindex];<BR>kn[25] =
binary[1+valindex];<BR>kn[26] = binary[2+valindex];<BR>kn[27] =
binary[3+valindex];<BR>valindex =
s8[2*worka[42]+worka[47]]<BR>[2*(2*(2*worka[43]+worka[44])+<BR>worka[45])+worka[46]];<BR>valindex
= valindex * 4;<BR>kn[28] = binary[0+valindex];<BR>kn[29] =
binary[1+valindex];<BR>kn[30] = binary[2+valindex];<BR>kn[31] =
binary[3+valindex];<BR><BR>/* Permute - P */<BR>worka[ 0] =
kn[15];<BR>worka[ 1] = kn[ 6];<BR>worka[ 2] = kn[19];<BR>worka[ 3] =
kn[20];<BR>worka[ 4] = kn[28];<BR>worka[ 5] = kn[11];<BR>worka[ 6] =
kn[27];<BR>worka[ 7] = kn[16];<BR>worka[ 8] = kn[ 0];<BR>worka[ 9] =
kn[14];<BR>worka[10] = kn[22];<BR>worka[11] = kn[25];<BR>worka[12] = kn[
4];<BR>worka[13] = kn[17];<BR>worka[14] = kn[30];<BR>worka[15] = kn[
9];<BR>worka[16] = kn[ 1];<BR>worka[17] = kn[ 7];<BR>worka[18] =
kn[23];<BR>worka[19] = kn[13];<BR>worka[20] = kn[31];<BR>worka[21] =
kn[26];<BR>worka[22] = kn[ 2];<BR>worka[23] = kn[ 8];<BR>worka[24] =
kn[18];<BR>worka[25] = kn[12];<BR>worka[26] = kn[29];<BR>worka[27] = kn[
5];<BR>worka[28] = kn[21];<BR>worka[29] = kn[10];<BR>worka[30] = kn[
3];<BR>worka[31] = kn[24];<BR><BR>/* bufout XOR worka */<BR>for (i = 0; i
< 32; i++) {<BR>bufout[i+32] = bufout[i] ^ worka[i];<BR>bufout[i] =
buffer[i];<BR>}<BR>} /* End of Iter */<BR><BR>/* Prepare Output */<BR>for
(i = 0; i < 32; i++) {<BR>j = bufout[i];<BR>bufout[i] =
bufout[32+i];<BR>bufout[32+i] = j;<BR>}<BR><BR>/* Inverse Initial
Permutation */<BR>buffer[ 0] = bufout[39];<BR>buffer[ 1] = bufout[
7];<BR>buffer[ 2] = bufout[47];<BR>buffer[ 3] = bufout[15];<BR>buffer[ 4]
= bufout[55];<BR>buffer[ 5] = bufout[23];<BR>buffer[ 6] =
bufout[63];<BR>buffer[ 7] = bufout[31];<BR>buffer[ 8] =
bufout[38];<BR>buffer[ 9] = bufout[ 6];<BR>buffer[10] =
bufout[46];<BR>buffer[11] = bufout[14];<BR>buffer[12] =
bufout[54];<BR>buffer[13] = bufout[22];<BR>buffer[14] =
bufout[62];<BR>buffer[15] = bufout[30];<BR>buffer[16] =
bufout[37];<BR>buffer[17] = bufout[ 5];<BR>buffer[18] =
bufout[45];<BR>buffer[19] = bufout[13];<BR>buffer[20] =
bufout[53];<BR>buffer[21] = bufout[21];<BR>buffer[22] =
bufout[61];<BR>buffer[23] = bufout[29];<BR>buffer[24] =
bufout[36];<BR>buffer[25] = bufout[ 4];<BR>buffer[26] =
bufout[44];<BR>buffer[27] = bufout[12];<BR>buffer[28] =
bufout[52];<BR>buffer[29] = bufout[20];<BR>buffer[30] =
bufout[60];<BR>buffer[31] = bufout[28];<BR>buffer[32] =
bufout[35];<BR>buffer[33] = bufout[ 3];<BR>buffer[34] =
bufout[43];<BR>buffer[35] = bufout[11];<BR>buffer[36] =
bufout[51];<BR>buffer[37] = bufout[19];<BR>buffer[38] =
bufout[59];<BR>buffer[39] = bufout[27];<BR>buffer[40] =
bufout[34];<BR>buffer[41] = bufout[ 2];<BR>buffer[42] =
bufout[42];<BR>buffer[43] = bufout[10];<BR>buffer[44] =
bufout[50];<BR>buffer[45] = bufout[18];<BR>buffer[46] =
bufout[58];<BR>buffer[47] = bufout[26];<BR>buffer[48] =
bufout[33];<BR>buffer[49] = bufout[ 1];<BR>buffer[50] =
bufout[41];<BR>buffer[51] = bufout[ 9];<BR>buffer[52] =
bufout[49];<BR>buffer[53] = bufout[17];<BR>buffer[54] =
bufout[57];<BR>buffer[55] = bufout[25];<BR>buffer[56] =
bufout[32];<BR>buffer[57] = bufout[ 0];<BR>buffer[58] =
bufout[40];<BR>buffer[59] = bufout[ 8];<BR>buffer[60] =
bufout[48];<BR>buffer[61] = bufout[16];<BR>buffer[62] =
bufout[56];<BR>buffer[63] = bufout[24];<BR><BR>j = 0;<BR>for (i = 0; i
< 8; i++) {<BR>*(dest + i) = 0x00;<BR>for (k = 0; k < 7;
k++)<BR>*(dest + i) = ((*(dest + i)) + buffer[j+k]) * 2;<BR>*(dest + i) =
*(dest + i) + buffer[j+7];<BR>j +=
8;<BR>}<BR>}</FONT></P></TD></TR></TBODY></TABLE>
<TABLE id=AutoNumber2 height=42 cellSpacing=1 width="100%" border=0>
<TBODY>
<TR>
<TD align=middle width="100%"><INPUT onclick=javascript:window.close(); type=button value=关闭窗口 name=exit>
</TD></TR></TBODY></TABLE></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -