trader indo Ответов: 1

Как изменить mixcoloumn AES с начальной перестановкой на таблице DES?


мне нужно modifiead AES с изменениями mixcoloumn proses с начальной таблицей перестановок на DES, я не знаю, как сделать код с помощью C# winform, не могли бы вы помочь мне сделать программу?

Что я уже пробовал:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Security.Cryptography;
using System.IO;
using System.Data;



namespace test
{
    class cryptografi
    {
        private string Plaint_Text;
        private string Key;
        private string cipherText;
        private string[] cipherText2;
        private string cipherTextTampil;
        
        
        public string [] CipherText2
        {
            get
            {
                return CipherText2;
            }
            set
            {
                cipherText2 = value;
            }
        }
        public string CipherText
        {
            get
            {
                return cipherText;
            }
            set
            {
                cipherText = value;
            }
        }
        public string CipherTextTampil
        {
            get
            {
                return cipherTextTampil;
            }
            set
            {
                cipherTextTampil = value;
            }
        }
        public string PlainText
        {
            get
            {
                return Plaint_Text;
            }
            set
            {
                Plaint_Text = value;
            }
        }
        private string[,] SBOX_SubByte =
        {
                { "63", "7C", "77", "7B", "F2", "6B", "6F", "C5", "30", "01", "67", "2B", "FE", "D7", "AB", "76" },
                { "CA", "82", "C9", "7D", "FA", "59", "47", "F0", "AD", "D4", "A2", "AF", "9C", "A4", "72", "C0" },
                { "B7", "FD", "93", "26", "36", "3F", "F7", "CC", "34", "A5", "E5", "F1", "71", "D8", "31", "15" },
                { "04", "C7", "23", "C3", "18", "96", "05", "9A", "07", "12", "80", "E2", "EB", "27", "B2", "75" },
                { "09", "83", "2C", "1A", "1B", "6E", "5A", "A0", "52", "3B", "D6", "B3", "29", "E3", "2F", "84" },
                { "53", "D1", "00", "ED", "20", "FC", "B1", "5B", "6A", "CB", "BE", "39", "4A", "4C", "58", "CF" },
                { "D0", "EF", "AA", "FB", "43", "4D", "33", "85", "45", "F9", "02", "7F", "50", "3C", "9F", "A8" },
                { "51", "A3", "40", "8F", "92", "9D", "38", "F5", "BC", "B6", "DA", "21", "10", "FF", "F3", "D2" },
                { "CD", "0C", "13", "EC", "5F", "97", "44", "17", "C4", "A7", "7E", "3D", "64", "5D", "19", "73" },
                { "60", "81", "4F", "DC", "22", "2A", "90", "88", "46", "EE", "B8", "14", "DE", "5E", "0B", "DB" },
                { "E0", "32", "3A", "0A", "49", "06", "24", "5C", "C2", "D3", "AC", "62", "91", "95", "E4", "79" },
                { "E7", "C8", "37", "6D", "8D", "D5", "4E", "A9", "6C", "56", "F4", "EA", "65", "7A", "AE", "08" },
                { "BA", "78", "25", "2E", "1C", "A6", "B4", "C6", "E8", "DD", "74", "1F", "4B", "BD", "8B", "8A" },
                { "70", "3E", "B5", "66", "48", "03", "F6", "0E", "61", "35", "57", "B9", "86", "C1", "1D", "9E" },
                { "E1", "F8", "98", "11", "69", "D9", "8E", "94", "9B", "1E", "87", "E9", "CE", "55", "28", "DF" },
                { "8C", "A1", "89", "0D", "BF", "E6", "42", "68", "41", "99", "2D", "0F", "B0", "54", "BB", "16" }
        };

        private string[,] SBOX_Inverse =
        {
                { "52", "09", "6a", "d5", "30", "36", "a5", "38", "bf", "40", "a3", "9e", "81", "f3", "d7", "fb" },
                { "7c", "e3", "39", "82", "9b", "2f", "ff", "87", "34", "8e", "43", "44", "c4", "de", "e9", "cb" },
                { "54", "7b", "94", "32", "a6", "c2", "23", "3d", "ee", "4c", "95", "0b", "42", "fa", "c3", "4e" },
                { "08", "2e", "a1", "66", "28", "d9", "24", "b2", "76", "5b", "a2", "49", "6d", "8b", "d1", "25" },
                { "72", "f8", "f6", "64", "86", "68", "98", "16", "d4", "a4", "5c", "cc", "5d", "65", "b6", "92" },
                { "6c", "70", "48", "50", "fd", "ed", "b9", "da", "5e", "15", "46", "57", "a7", "8d", "9d", "84" },
                { "90", "d8", "ab", "00", "8c", "bc", "d3", "0a", "f7", "e4", "58", "05", "b8", "b3", "45", "06" },
                { "d0", "2c", "1e", "8f", "ca", "3f", "0f", "02", "c1", "af", "bd", "03", "01", "13", "8a", "6b" },
                { "3a", "91", "11", "41", "4f", "67", "dc", "ea", "97", "f2", "cf", "ce", "f0", "b4", "e6", "73" },
                { "96", "ac", "74", "22", "e7", "ad", "35", "85", "e2", "f9", "37", "e8", "1c", "75", "df", "6e" },
                { "47", "f1", "1a", "71", "1d", "29", "c5", "89", "6f", "b7", "62", "0e", "aa", "18", "be", "1b" },
                { "fc", "56", "3e", "4b", "c6", "d2", "79", "20", "9a", "db", "c0", "fe", "78", "cd", "5a", "f4" },
                { "1f", "dd", "a8", "33", "88", "07", "c7", "31", "b1", "12", "10", "59", "27", "80", "ec", "5f" },
                { "60", "51", "7f", "a9", "19", "b5", "4a", "0d", "2d", "e5", "7a", "9f", "93", "c9", "9c", "ef" },
                { "a0", "e0", "3b", "4d", "ae", "2a", "f5", "b0", "c8", "eb", "bb", "3c", "83", "53", "99", "61" },
                { "17", "2b", "04", "7e", "ba", "77", "d6", "26", "e1", "69", "14", "63", "55", "21", "0c", "7d" }
        };

        private string[,] Rcon =
        {
            {"01", "00", "00", "00" },
            {"02", "00", "00", "00" },
            {"04", "00", "00", "00" },
            {"08", "00", "00", "00" },
            {"10", "00", "00", "00" },
            {"20", "00", "00", "00" },
            {"40", "00", "00", "00" },
            {"80", "00", "00", "00" },
            {"1b", "00", "00", "00" },
            {"36", "00", "00", "00" },
        };

        public List<string[]> Wlist = new List<string[]>();
        /*--------------------------------------------------------------------------------------------*/
        /*Enkrisi proses*/
        /*Proses SubByte S-Box**/

        private string [, ] SubByte (string[, ] x)
        {
            for (int i=0; i<=x.GetLength(0);i++)
            {
                for (int j=0; i<=x.GetLength(1)-1; i++)
                {
                    if (x[i,j].Length==1)
                    {
                        x[i, j] = SBOX_SubByte[0, ConversiClass.Hextodecimal(x[i, j][0].ToString())];
                    }
                    else
                    {
                        x[i, j] = SBOX_SubByte[ConversiClass.Hextodecimal(x[i, j][0].ToString()), ConversiClass.Hextodecimal(x[i,j] [1].ToString())];
                    }
                }
            }
            return x;
        }
        /*--------------------------------------------------------------------------------------------*/
        /*Proses SHiftRows**/

        private string [, ] ShiftRows (string [,] x)
        {
            string[,] tmp = new string[x.GetLength(0), x.GetLength(0)];
            for (int i = 0; i<=x.GetLength(0)-1;i++)
            {
                int pos = i;

                for (int j=0; j<=x.GetLength(0)-1;j++)
                {
                    tmp[i, j] = x[i, pos];
                    if (pos==3)
                    {
                        pos = 0;
                    }
                    else
                    {
                        pos += 1;
                    }
                }
            }
            return tmp;
        }

        /*--------------------------------------------------------------------------------------------*/

        /*geser kiri Initial Permutation**/
        private int ShiftLift (string x)
        {
            string tmp = ConversiClass.HexaToBiner(x);
            return ConversiClass.BinnerToDecimal(tmp.Substring(1)+tmp.Substring(0,1));
        }

        /*--------------------------------------------------------------------------------------------*/

        /*Proses Initial Permutation**/
        private string[,] InputPermutation =  {
            { "58", "50", "42", "34", "26", "18", "10", "2" },
            { "60", "52", "44", "36", "28", "20", "12", "4" },
            { "62", "54", "46", "38", "30", "22", "14", "6" },
            { "64", "56", "48", "40", "32", "24", "16", "8" },
            { "57", "49", "41", "33", "25", "17", "9", "1" },
            { "59", "51", "43", "35", "27", "19", "11", "3" },
            { "61", "53", "45", "37", "29", "21", "13", "5" },
            { "63", "55", "47", "39", "31", "3", "15", "7" },
            { "116", "100", "84", "68", "52", "36", "20", "4" },
            { "120", "104", "88", "72", "56", "40", "24", "8" },
            { "124", "108", "92", "76", "60", "44", "28", "12" },
            { "128", "112", "96", "80", "64", "48", "32", "16" },
            { "114", "98", "82", "66", "50", "34", "18", "2" },
            { "118", "102", "86", "70", "54", "38", "22", "6" },
            { "122", "106", "90", "74", "58", "42", "26", "10" },
            { "126", "110", "94", "78", "62", "46", "30", "14" }

        };

        private string[, ] InversePermutation = {
            { "40", "8", "48", "16", "56", "24", "64", "32" },
            { "39", "7", "47", "15", "55", "23", "63", "31" },
            { "38", "6", "46", "14", "54", "22", "62", "30" },
            { "37", "5", "45", "13", "53", "21", "61", "29" },
            { "36", "4", "44", "12", "52", "20", "60", "28" },
            { "35", "3", "43", "11", "51", "19", "59", "27" },
            { "34", "2", "42", "10", "50", "18", "58", "26" },
            { "33", "1", "41", "9", "49", "17", "57", "25" },
            { "80", "16", "96", "32", "112", "48", "128", "64" },
            { "78", "14", "94", "30", "110", "46", "126", "62" },
            { "76", "12", "92", "28", "108", "44", "124", "60" },
            { "74", "10", "90", "26", "106", "42", "122", "58" },
            { "72", "8", "88", "24", "104", "40", "120", "56" },
            { "70", "6", "86", "22", "102", "38", "118", "54" },
            { "68", "4", "84", "20", "100", "36", "116", "52" },
            { "66", "2", "82", "18", "98", "34", "114", "50" }
        };

        private string [, ] IP (string [,] x)
        {
            string[,] tmp = new string[x.GetLength(0), x.GetLength(0)];
            int k = 58;
            for (int i=0;i<=x.GetLength(0)-1;i++)
            {
                int pos = i;
            }
            return tmp;
        }


    }
}

1 Ответов

Рейтинг:
2

OriginalGriff

Нет, если ваш код настолько беден!
Один только взгляд на Первый БИТ вызывает у меня озноб и показывает, что ваш код полностью непроверен:

public string [] CipherText2
{
    get
    {
        return CipherText2;
    }
    set
    {
        cipherText2 = value;
    }
}
Попробуйте этот код и посмотрите, что произойдет:
cryptografi cg = new cryptografi();
string[] arr = cg.Ciphertext2;

Это будет некрасиво...

И орфографические ошибки в вашем именовании, отсутствие соглашений об именовании, полное отсутствие каких-либо комментариев или самодокументации не склоняют меня пробираться через все остальное, чтобы выяснить, что вы могли или не могли сделать до сих пор.
Разберитесь со своим кодом, проверьте, что у вас есть, а затем вернитесь и объясните, какая помощь вам нужна. Общий дамп кода и "помогите мне сделать программу" вряд ли приведут вас куда-нибудь.