| #!/usr/local/bin/perl |
| |
| @PC2_C=(14,17,11,24, 1, 5, |
| 3,28,15, 6,21,10, |
| 23,19,12, 4,26, 8, |
| 16, 7,27,20,13, 2, |
| ); |
| |
| @PC2_D=(41,52,31,37,47,55, |
| 30,40,51,45,33,48, |
| 44,49,39,56,34,53, |
| 46,42,50,36,29,32, |
| ); |
| |
| $i=0; |
| foreach (@PC2_C) { |
| $_--; |
| # printf "%2d,",$_; |
| $C{$_}=$i; |
| ++$i; |
| # print "\n" if ((($i) % 8) == 0); |
| } |
| $i=0; |
| #print "\n"; |
| foreach (@PC2_D) { |
| $_-=28; |
| $_--; |
| # printf "%2d,",$_; |
| $D{$_}=$i; |
| $i++; |
| # print "\n" if ((($i) % 8) == 0); |
| } |
| |
| #print "\n"; |
| foreach $i (0 .. 27) |
| { |
| $_=$C{$i}; |
| # printf "%2d,",$_; |
| $i++; |
| # print "\n" if ((($i) % 8) == 0); |
| } |
| #print "\n"; |
| |
| #print "\n"; |
| foreach $i (0 .. 27) |
| { |
| $_=$D{$i}; |
| # printf "%2d,",$_; |
| $i++; |
| # print "\n" if ((($i) % 8) == 0); |
| } |
| #print "\n"; |
| |
| print "static ulong skb[8][64]={\n"; |
| &doit("C",*C, 0, 1, 2, 3, 4, 5); |
| &doit("C",*C, 6, 7, 9,10,11,12); |
| &doit("C",*C,13,14,15,16,18,19); |
| &doit("C",*C,20,22,23,25,26,27); |
| |
| &doit("D",*D, 0, 1, 2, 3, 4, 5); |
| &doit("D",*D, 7, 8,10,11,12,13); |
| &doit("D",*D,15,16,17,18,19,20); |
| &doit("D",*D,21,22,23,24,26,27); |
| print "};\n"; |
| |
| sub doit |
| { |
| local($l,*A,@b)=@_; |
| local(@out); |
| |
| printf("/* for $l bits (numbered as per FIPS 46) %d %d %d %d %d %d */\n", |
| $b[0]+1, $b[1]+1, $b[2]+1, $b[3]+1, $b[4]+1, $b[5]+1); |
| for ($i=0; $i<64; $i++) |
| { |
| $out[$i]=0; |
| $j=1; |
| #print "\n"; |
| for ($k=0; $k<6; $k++) |
| { |
| $l=$A{$b[$k]}; |
| #print"$l - "; |
| if ((1<<$k) & $i) |
| { |
| $ll=int($l/6)*8+($l%6); |
| $out[$i]|=1<<($ll); |
| } |
| } |
| $pp=$out[$i]; |
| $pp=($pp&0xff0000ff)| (($pp&0x00ff0000)>>8)| |
| (($pp&0x0000ff00)<<8); |
| printf("0x%08X,",$pp); |
| print "\n" if (($i+1) % 4 == 0); |
| } |
| } |