public static ChuoiNhiPhan TinhP(ChuoiNhiPhan chuoiVao) { ChuoiNhiPhan chuoiKQ = new ChuoiNhiPhan(32); for (int i = 0; i < chuoiKQ.DoDai; i++) { chuoiKQ.MangNhiPhan[i] = chuoiVao.MangNhiPhan[P[i] - 1]; } return(chuoiKQ); }
public static ChuoiNhiPhan[] TinhPC1(ChuoiNhiPhan chuoiVao) { ChuoiNhiPhan ChuoiSauPC1 = new ChuoiNhiPhan(56); for (int i = 0; i < ChuoiSauPC1.DoDai; i++) { ChuoiSauPC1.MangNhiPhan[i] = chuoiVao.MangNhiPhan[PC1[i] - 1]; } return(ChuoiSauPC1.ChiaDoi()); }
/// <summary> /// Tinh IP /// /// </summary> /// <param name="chuoiVao"></param> /// <returns></returns> public static ChuoiNhiPhan[] TinhIP(ChuoiNhiPhan chuoiVao, int MaHoaHayGiaiMa) // 1 ma hoa, -1 giai ma { ChuoiNhiPhan ChuoiSauIP = new ChuoiNhiPhan(chuoiVao.DoDai); for (int i = 0; i < chuoiVao.DoDai; i++) { ChuoiSauIP.MangNhiPhan[i] = chuoiVao.MangNhiPhan[(MaHoaHayGiaiMa == 1? IP[i] - 1: IP_1[i] - 1)]; } return(ChuoiSauIP.ChiaDoi()); }
public static ChuoiNhiPhan TinhPC2(ChuoiNhiPhan chuoiTrai, ChuoiNhiPhan chuoiPhai) { ChuoiNhiPhan CongChuoiVao = chuoiTrai.Cong(chuoiPhai); ChuoiNhiPhan ChuoiSauPC2 = new ChuoiNhiPhan(48); for (int i = 0; i < ChuoiSauPC2.DoDai; i++) { ChuoiSauPC2.MangNhiPhan[i] = CongChuoiVao.MangNhiPhan[PC2[i] - 1]; } return(ChuoiSauPC2); }
public static ChuoiNhiPhan TinhIP_1(ChuoiNhiPhan chuoiTrai, ChuoiNhiPhan chuoiPhai, int MaHoaHayGiaiMa) // 1 ma hoa, -1 giai ma { ChuoiNhiPhan ChuoiNoi = chuoiTrai.Cong(chuoiPhai); ChuoiNhiPhan KQ = new ChuoiNhiPhan(ChuoiNoi.DoDai); for (int i = 0; i < ChuoiNoi.DoDai; i++) { KQ.MangNhiPhan[i] = ChuoiNoi.MangNhiPhan[(MaHoaHayGiaiMa == 1 ? IP_1[i] - 1 : IP[i] - 1)]; } return(KQ); }
private static ChuoiNhiPhan Tinh1SBox(ChuoiNhiPhan chuoiVao, int[,] sBox) { int[] GiaTriDauVaDuoi = new int[] { chuoiVao.MangNhiPhan[0], chuoiVao.MangNhiPhan[5] }; int Hang = ChuoiNhiPhan.ChuyenNhiPhanSangSo(new ChuoiNhiPhan(GiaTriDauVaDuoi)); int[] GiaTriGiua = new int[] { chuoiVao.MangNhiPhan[1], chuoiVao.MangNhiPhan[2], chuoiVao.MangNhiPhan[3], chuoiVao.MangNhiPhan[4] }; int Cot = ChuoiNhiPhan.ChuyenNhiPhanSangSo(new ChuoiNhiPhan(GiaTriGiua)); int GiaTriSbox = sBox[Hang, Cot]; return(ChuoiNhiPhan.ChuyenSoSangNhiPhan(GiaTriSbox, 4)); }
public static ChuoiNhiPhan TinhSBox(ChuoiNhiPhan chuoiVao) { ChuoiNhiPhan chuoiKQ; ChuoiNhiPhan[] ChuoiBiChia = chuoiVao.Chia(8); chuoiKQ = Tinh1SBox(ChuoiBiChia[0], sBox1); chuoiKQ = chuoiKQ.Cong(Tinh1SBox(ChuoiBiChia[1], sBox2)); chuoiKQ = chuoiKQ.Cong(Tinh1SBox(ChuoiBiChia[2], sBox3)); chuoiKQ = chuoiKQ.Cong(Tinh1SBox(ChuoiBiChia[3], sBox4)); chuoiKQ = chuoiKQ.Cong(Tinh1SBox(ChuoiBiChia[4], sBox5)); chuoiKQ = chuoiKQ.Cong(Tinh1SBox(ChuoiBiChia[5], sBox6)); chuoiKQ = chuoiKQ.Cong(Tinh1SBox(ChuoiBiChia[6], sBox7)); chuoiKQ = chuoiKQ.Cong(Tinh1SBox(ChuoiBiChia[7], sBox8)); return(chuoiKQ); }