Vous êtes sur la page 1sur 2

import java.math.

BigInteger;

public class des {


public static void main(String[] args)
{ String kplus="";
String[] cd=new String[80];
String[] k=new String[80];
String hexstr="133157799bbcdff1";
BigInteger ck=new BigInteger(hexstr,16);
String binstr=ck.toString(2);
binstr=("000").concat(binstr);

System.out.println("Cipher key :"+binstr);


System.out.println("Cipher key :"+binstr.length());
byte[] pci={
57, 49 ,41 ,33 ,25 ,17 ,9,
1 ,58 ,50 ,42 ,34 ,26 ,18,
10 ,2 ,59 ,51 ,43 ,35 ,27,
19 ,11 ,3 ,60 ,52 ,44 ,36,
63 ,55 ,47 ,39 ,31 ,23 ,15,
7 ,62 ,54 ,46 ,38 ,30 ,22,
14 ,6 ,61 ,53 ,45 ,37 ,29,
21 ,13, 5 ,28 ,20 ,12 ,4
};
for(int i=0;i<56;i++)
{kplus=kplus+binstr.charAt(pci[i]-1);
}
System.out.println("Kpuls :"+kplus);
String c[]=new String[30];
String d[]=new String[30];
c[0]=kplus.substring(0,28);
d[0]=kplus.substring(28);
//System.out.println("\n c0: "+c[0]+"\nd0: "+d[0]);
for(int i=1;i<17;i++)
{ if(i==1||i==2||i==9||i==16)
{
c[i]=c[i-1].substring(1)+c[i-1].charAt(0);
d[i]=d[i-1].substring(1)+d[i-1].charAt(0);
}
else
{
c[i]=c[i-1].substring(2)+c[i-1].charAt(0)+c[i-1].charAt(1);
d[i]=c[i-1].substring(2)+d[i-1].charAt(0)+d[i-1].charAt(1);
}
}

for(int i=0;i<17;i++)
{System.out.println("\nc"+i+": "+c[i]+"\nd"+i+": "+d[i]);
}

int[] pc2={

14 ,17 ,11 ,24 ,1 ,5 ,3 ,28,


15 ,6 ,21 ,10 ,23 ,19 ,12 ,4,
26 ,8 ,16 ,7 ,27 ,20 ,13 ,2,
41 ,52 ,31 ,37 ,47 ,55 ,30 ,40,
51 ,45 ,33 ,48 ,44 ,49 ,39 ,56,
34 ,53 ,46 ,42 ,50 ,36 ,29 ,32
};

for(int i=1;i<17;i++)
{cd[i]=(c[i]).concat(d[i]);
}
for(int i=1;i<17;i++)
{
k[i]=""; // --------------------------- correction ------- you have
not initialised the string elements of string array k as "" i.e blank,java
automatically initialises it to null so in the statement #1 when you add it will
first add null to the string..............(welcome....)
for(int j=0;j<48;j++)
{ String p=cd[i];
k[i]=k[i]+p.charAt(pc2[j]-1); // error will come here ( #1)
}
}
for(int i=1;i<17;i++)
{System.out.println("\nk"+i+": "+k[i]);
}

}
}