public ChuoiNhiPhan ThucHienDES(ChuoiNhiPhan ChuoiVaoDai, int MaHoaHayGiaiMa)// 1 ma hoa, -1 giai ma { KhoaDES.SinhKhoaCon(MaHoaHayGiaiMa); ChuoiNhiPhan[] DSChuoiVao = ChuoiVaoDai.Chia(ChuoiVaoDai.DoDai / 64); ChuoiNhiPhan ChuoiVao, ChuoiKQ; ChuoiKQ = new ChuoiNhiPhan(0); for (int k = 0; k < DSChuoiVao.Length; k++) { ChuoiVao = DSChuoiVao[k]; ChuoiNhiPhan[] ChuoiSauIP; ChuoiNhiPhan ChuoiSauIP_1; ChuoiNhiPhan L, R, F, TG; ChuoiSauIP = CacThongSo.TinhIP(ChuoiVao, MaHoaHayGiaiMa); L = ChuoiSauIP[0]; R = ChuoiSauIP[1]; for (int i = 0; i < 16; i++) { F = HamF(R, KhoaDES.DayKhoaPhu[i]); L = L.XOR(F); TG = L; L = R; R = TG; } ChuoiSauIP_1 = CacThongSo.TinhIP_1(R, L, MaHoaHayGiaiMa); ChuoiKQ = ChuoiKQ.Cong(ChuoiSauIP_1); } return(ChuoiKQ); }
public ChuoiHexa(string chuoi) { this.Chuoi = chuoi.ToUpper(); ChuoiNhiPhan chNP; if (KiemTra()) { chuoiNhiPhan = new ChuoiNhiPhan(0); foreach (var ch in Chuoi) { chNP = ChuoiNhiPhan.ChuyenSoSangNhiPhan(ChuoiHexa.ChuyenHexaSangHe10(ch), 4); chuoiNhiPhan = chuoiNhiPhan.Cong(chNP); } } }