Beruflich Dokumente
Kultur Dokumente
import
import
import
import
import
import
java.io.BufferedReader;
java.io.FileNotFoundException;
java.io.FileReader;
java.io.IOException;
java.io.PrintStream;
java.util.ArrayList;
/**
*
* @author Saif Khawaja
*/
//Advance key expansion
public class aes {
//input array
w[0]
w[1]
w[2
w[3]
public String [][]w={{"3A","2B","25","2C"},{"4C","3D","37","3B"},{"55","4B",
"48","1A"},{"73","12","1A","5F"}};
]
String line="";
while ((line = br.readLine()) != null) {
String[] spliteda = line.split(" ");
for(int i=0;i<spliteda.length;i++)
arrayList.add((spliteda[i]));
}
String read = sb.toString();
} finally {
br.close();
}
return arrayList;
}
public String sbox(String w) throws IOException
{
//just change to your directory and place a sbox.txt there
ArrayList arrayList=getsBox("C:\\Users\\Saif Khawaja\\Documents\\NetBeansP
rojects\\aes\\src\\aes\\sbox.txt");
String result="";
for(int i=0;i<w.length();i+=2)
{
int row = Integer.parseInt(w.charAt(i)+"", 16 );
int col = Integer.parseInt(w.charAt(i+1)+"", 16 );
result+=arrayList.get((16*row)+(col));
}
return result;
}
//g(w[3])
//subconstant XOR with rconstant
String []rsubconstant={"","","",""};
//rconstant XOR with w[3]
String a,b,c,d;
for(int i=0;i<=3;i++)
{
a=w[3][i];
d=sbox(a);
wsubstitute[i]=d;
b=roundconstant[i];
c=xorHex(a,b);
w3rconstant[i]=c;
//System.out.println(c);
}
//w substitute XOR with roundconstant
for(int i=0;i<=3;i++)
{
a=wsubstitute[i];
b=roundconstant[i];
c=xorHex(a,b);
subconstant[i]=c;
//System.out.println(c);
}
//subconstant XOR with rconstant
//*g[w[3]]
for(int i=0;i<=3;i++)
{
a=subconstant[i];
b=w3rconstant[i];
c=xorHex(a,b);
rsubconstant[i]=c;
//System.out.println(c);
}
//w[4]=w[0] XOR with g[w[3]]
for(int i=0;i<=3;i++)
{
a=w[0][i];
b=rsubconstant[i];
c=xorHex(a,b);
wnew[0][i]=c;
}
//w[5]=w[1] XOR with w[4]
for(int i=0;i<=3;i++)
{
a=w[1][i];
b=wnew[0][i];
c=xorHex(a,b);
wnew[1][i]=c;
}
//w[6]=w[2] XOR with w[5]
for(int i=0;i<=3;i++)
{
a=w[2][i];
b=wnew[1][i];
c=xorHex(a,b);
wnew[2][i]=c;
}
//w[7]=w[3] XOR with w[6]
for(int i=0;i<=3;i++)
{
a=w[3][i];
b=wnew[2][i];
c=xorHex(a,b);
wnew[3][i]=c;
}
//for print array
for(int i=0;i<=3;i++)
{
System.out.print("w["+(i+4)+"]=");
for(int j=0;j<=3;j++)
{
System.out.print(wnew[i][j]+",");
}
System.out.println("");
}
}
public static void main(String[] args) throws IOException
{aes s=new aes();
s.aesexpansion();
}
}