Example #1
0
        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);
        }
Example #2
0
        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());
        }
Example #3
0
        /// <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());
        }
Example #4
0
        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);
        }
Example #5
0
        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);
        }
Example #6
0
        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));
        }
Example #7
0
        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);
        }