Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
                }
            }
        }