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 static string ChuyenNhiPhanSangChu(ChuoiNhiPhan ChuoiVao) { int soChu = ChuoiVao.DoDai / 8; ChuoiNhiPhan[] MangChuoi = ChuoiVao.Chia(soChu); string KQ = ""; foreach (var ch in MangChuoi) { KQ += (char)ChuoiNhiPhan.ChuyenNhiPhanSangSo(ch); } return(KQ); }