Professional Documents
Culture Documents
BÁO CÁO ĐỒ ÁN 3 LẦN 5
BÁO CÁO ĐỒ ÁN 3 LẦN 5
BO CO N 3
TI: Nghin cu v thc hin cc phng php bo mt khi d liu dng thut ton AES
GIO VIN HNG DN: TS PHM VIT THNH
SINH VIN THC HIN: TRN VN CHIU L HU KHANG NGUYN HNG THI SHSV:20090282 SHSV:20093493 SHSV:20096357 T 12-K54 T12-K54 T10-K54
1. Hm c File Text:
Hm ny c nhim v c ni dung c ghi trong 1 file txt. Vi u vo l ng dn ca file txt v u ra l 1 chui cha ni dung. // Phuong Thuc Doc File txt; public static String DocFile(String path) throws FileNotFoundException, IOException{ FileReader fr=new FileReader(path); BufferedReader br =new BufferedReader(fr); String str=""; String line = ""; while((line=br.readLine())!=null) { str=str+line; //luu dan vao chuoi str;
} br.close(); fr.close(); //System.out.println(str); return str; } Path cha ng dn ca file txt cn c v str la chui cha ni dung.str chnh l gi tr tr v ca hm ny. Kt qu:
fos.flush(); fos.close(); } Hm ny c tham s u vo l 2 chui str v path . Str cha ni dung chui cn ghi vo file text, path cha ng dn cho file text cn ghi vo. Nu file nay cha tn ti th s c to mi.
for(j=1;j<=delta;j++){ text16=text16+" "; // text16=text16+'!'; } } // System.out.println("a="+a+" sochuoicon="+sochuoicon+"delta="+delta); return text16; } Hm ny c 2 tham s u vo l input v i. input l chui u vo c di bt k , i l ch s ca chui 16 k t m ta mun ly ra t chui u vo.
y dng trn l chui u vo, dng di l chui 16 k t th 2 trong chui u vo .Nu chui c chn khng 16 k t th s c b thm cc k t space cho 16 k t.
public static int[] string_to_hexa(String str) { int[] cipher=new int[str.length()]; //mang chua hexa; int i; for(i=0;i<str.length();i++){ char ch=str.charAt(i); cipher[i]=(int)ch; // System.out.println((int)'A'); // System.out.println((char)65); } return cipher; } Hm c tham s u vo l 1 chui str v gi tr tr v u ra l 1 mng int[] cipher cha m hexa ca cc k t u vo. Kt qu:
public static String hexa_to_string(int[] cipher) { String str =""; int i; for(i=0;i<cipher.length;i++){ // short value; // value=(short)cipher[i]; //char ch=(char)value; char ch=(char)cipher[i]; str=str+ch; //System.out.print(ch); // System.out.println((int)'A'); // System.out.println((char)65); } return str; } Hm c tham s u vo l 1 mng int[] cipher cha gi tr hexa ca cc k t . Gi tr tr v u ra l 1 chui k t. Kt qu:
6. Hm M Ha V Gii M.
// Phuong thuc thuc hien chuc nang ma hoa text; public static String MaHoaText(String str_key, String str_input){ String str_input_block,str_output=""; int[][] input_block =new int[4][4]; int[] input_key=new int[16]; int i,sochuoi_16,n,a,leng_text; leng_text=str_input.length(); a=leng_text%16; sochuoi_16=(a==0)?(leng_text/16):((leng_text/16)+1); // thuc hien ma hoa tung chuoi con; for(n=0;n<=sochuoi_16-1;n++){ str_input_block = Chose_Text.chose_array_string(str_input,n); //lay chuoi thu i tu text dau vao; int[] input_array =new int[16]; //chuyen chuoi sang hexa; input_array = String_to_Hexa.string_to_hexa(str_input_block); //chuyen sang hexa input_key = String_to_Hexa.string_to_hexa(str_key); //day la khoa dau vao de ma khoa; // chuyen tu mnag 1 chieu sang block 4x4 day la dau vao de ma hoa; for(i=0;i<=3;i++) { input_block[0][i]=input_array[i*4]; input_block[1][i]=input_array[i*4+1]; input_block[2][i]=input_array[i*4+2]; input_block[3][i]=input_array[i*4+3]; } // thuc hien ma hoa tung block 4x4;
Main_Cipher.cipher(input_block, input_key); //chuyen tu block 4x4 sang mang 1 chieu; for(i=0;i<=15;i++){ //code chuyen; input_array[i]=input_block[i%4][i/4]; } //chuyen tu so sang chuoi; str_input_block = Hexa_to_String.hexa_to_string(input_array); str_output=str_output + str_input_block; } return str_output; } Hm m ha c tham s u vo l 2 chui str_key v str_input . Str_key l chui cha key dng cho thut ton AES .Str_input l chui cn m ha .Gi tr tr v ca hm ny l 1 chui str_output (y l chui c m ha). Kt qu:
// Phuong thuc giai ma text; public static String GiaiMaText(String str_key,String str_input ){ String str_input_block,str_output=""; int[][] input_block =new int[4][4]; int[] input_key=new int[16]; int i,sochuoi_16,n,a,leng_text; leng_text=str_input.length(); a=leng_text%16; sochuoi_16=(a==0)?(leng_text/16):((leng_text/16)+1); // thuc hien ma hoa tung chuoi con; for(n=0;n<=sochuoi_16-1;n++){ str_input_block = Chose_Text.chose_array_string(str_input,n); //lay chuoi thu i tu text dau vao; int[] input_array =new int[16]; //chuyen chuoi sang hexa; input_array = String_to_Hexa.string_to_hexa(str_input_block); //chuyen sang hexa input_key = String_to_Hexa.string_to_hexa(str_key); //day la khoa dau vao de ma khoa; // chuyen tu mnag 1 chieu sang block 4x4 day la dau vao de ma hoa; for(i=0;i<=3;i++) { input_block[0][i]=input_array[i*4]; input_block[1][i]=input_array[i*4+1]; input_block[2][i]=input_array[i*4+2]; input_block[3][i]=input_array[i*4+3]; } // thuc hien giai ma block 4x4; Main_Inverse_Cipher.Inverse_Cipher(input_block, input_key);
//chuyen tu block 4x4 sang mang 1 chieu; for(i=0;i<=15;i++){ //code chuyen; input_array[i]=input_block[i%4][i/4]; } //chuyen tu so sang chuoi; str_input_block = Hexa_to_String.hexa_to_string(input_array); str_output=str_output + str_input_block; } return str_output; } Hm gii m c tham s u vo l 2 chui str_key v str_input . Str_key l chui cha key dng cho thut ton AES .Str_input l chui cn c gii m .Gi tr tr v ca hm ny l 1 chui str_output (y l chui c gii m ). Kt qu:
Kt qu chnh xc.
TH2:
Kt qu chnh xc;
TH3:
Kt qu chnh xc.
TH4:
Kt qu sai.
TH5:
Kt qu sai.
Nhn Xt:
Em th test 1 s trng hp vi chui u vo khc nhau th vi ni dung chui ngn khong 50 k t th kt qu kh chnh xc.Vi ni dung chui vo di th hay c li sai.Tt c cc trng hp sai u c chung c im chui sau khi m ha c xut hin k t xung dng. Hin ti chng em cng cha tm c chnh xc nguyn nhn gy sai v cch sa li.