C# Использование генерации случайных чисел с ключом для решения зашифрованного сообщения, но я не могу заставить сообщение уложиться в строку - PullRequest
0 голосов
/ 02 августа 2020

Моя проблема, с которой я столкнулся сегодня, представлена ​​в виде строкового массива. Цель этого назначения - использовать Random с начальным значением 243 в качестве ключа для доступа к скрытому сообщению из 22 строк. В этих 22 строках 5 букв, составляющих слово. Вот 22 строки, содержащие 60 символов в каждой, и цель состоит в том, чтобы использовать ключ для выбора 5 букв из каждой строки.

String[] line = { "<?JRrP*h^vtVc^ppOZI@PCAa{ (n1>&VSf~59eI7Tn5We^77O/CEvgdq}gU0",
                              "G;t@o=#|^ZWV01`a-h{=Js>!z`_j!&7PB9nCgtfHZ:WtWk4e&#k5i7uV{$E/",
                              "]7zXf&4uA=n8!Sa08IIoKyc~:#d*T8FcOWjB?~QQ =Ch(S37UT>RYobbSz>@",
                              "w*A)v5gHh>p9vvVeUzvfmMT~tr)8s(nC`11Lz:qhjjN6c$Z ^T,W$VQqUB/#",
                              "+NSrOLhed*2;)$z#}=;t7FY?z6?e^?cX+nf;6me6Kt|TBpN ZNr7&9j t4c8",
                              "-N&E2X/:<_k0W$HpH${*f?M0K_Qp##F!)M){nVAu`4bzab_too;m8YPm!tyR",
                              "s=69 j&*yLRpb2IR[RNg~O!ZfUhr{czx]mbB}Hau]T(CtI-%0}1NFeRV<ZRb",
                              "!U-]QY4sN&S2pW+JGaenHc?|)KQJ:,&Cu}s'GIp:59U)J~]n&(/^s6:=htS ",
                              "'iXi 0;qbk#|kn&/-5Q*mbC2|FN_bVp6tk3K_3):bj+#%1 I/+0 ]I6CEFDX",
                              " [/,2k( 7ZNy,7GlV@,kk$PVEpXKTn&8mPX&[~o9)q2S]6rs!3k$:i$]*WeA",
                              "3[KGT5+Z^@FWPt aq{y/|2I@#!}5Kzz$9M&LFieF*8f_l4RGuBie]UD!2+Dh",
                              "7u.qDs=#k5:' S$dKiRmMU>)1lFb)%:;EL/4)#:Juu[_'a1)Q_TGWUe`V%QW",
                              "zZxtz~aOCoZGN(vny]#N[=1IOqbnGN]iQbN;Vtc' od`$-xN^&ex##z]HO )",
                              "<q(t2VukYZf%yyNzWODBw40wgc!Nfpr&]Yj- oNM6-t#^`h(R %o+s0'af-N",
                              "Ut$gg@F?/@Bg!v+j>,aedrzekyzhebJpb wo(-:>:hw1]<v3hEgU%&h]J=zm",
                              "D]uLuP$ ~;b1pBk% usN#f #ytk[6:Di1Lx[hK;,7u4mbVca:b[` bk]]qQ ",
                              "dHicvw De/<SM{7+QR@n0iAR^bUe_;}uy;Fr,PUiV?8*F(37a`++Q.nZ&6%3",
                              "Bcc-1EY1UG} {a on6,UN=P~/rDjKkguKBG<[*xsM#akb+/zA}gn*Nc$hc}>",
                              " ndhw'TX-O4f=* LZc<#cHIL#xk|]BSv+Z!^<s-ZUUlpi!Q~F7IimyZVD7de",
                              ":Vzi{=[b)HEaV`M-[Wb#FlVFxNN0 I9. G?}Z#tKDmu|'gM LLzlT->M TpL",
                              "mKb^.+i/@NRXa7]XuX>1!gbR LOQ(q}%1H]x+.mz:=D}xB*<$eWDj_J%g/0a",
                              "[{&NOLF9YcL^iCvcBcY+A2LB:UoQ|V1{s,?>7krK{pb@8w]pgfa#U$tHNbay" };

Здесь находится фрагмент кода, над которым я работаю.

String[] decrypted = new String[22];
            var randNum = new Random(243);
            int i, k;



            for (i = 0; i < 22; i++)
            {

                String currentLine = line[i];


                for (k = 0; k < 5; k++)
                {
                    decrypted[i] = Convert.ToString(currentLine[randNum.Next(0, 60)]);
                    
                }
                
            }

            printIt(decrypted);


            Console.ReadLine();
        }

        static void printIt(string[] decrypted)
        {
            var build = new StringBuilder();

                for (int h = 0; h < 22; h++)
                {
                build.Append(Convert.ToString(decrypted[h]));
                }

            Console.WriteLine(build);

Помощь, которую я ищу, заключается в том, чтобы понять, как я могу успешно сохранить 5 символов из каждой строки в расшифрованном массиве.

Я могу получить правильный ответ, если вставлю прямо в мой вложенный для l oop the Console.WriteLine(decrypted[i]);

Однако, если я попытаюсь вытащить ту же строку в любом месте после l oop, содержащего random, я могу вытащить только первую букву каждой строки .

Ответы [ 2 ]

0 голосов
/ 02 августа 2020

Измените свой l oop на:

    String[] decrypted = new String[110];

    for (i = 0; i < 22; i++)
    {
        String currentLine = line[i];
        for (k = 0; k < 5; k++)
        {
            decrypted[k + i * 5] = Convert.ToString(currentLine[randNum.Next(0, 60)]);
        }
    }

и распечатайте:

static void printIt(string[] decrypted)
{
    var build = new StringBuilder();

    for (int h = 0; h < decrypted.Length; h++)
    {
        build.Append(Convert.ToString(decrypted[h]));
    }

    Console.WriteLine(build);
}
0 голосов
/ 02 августа 2020

Я смог решить свою проблему после того, как провел немного дополнительных исследований и вычленил то, что я мог упустить. Вот решение.

for (i = 0; i < 22; i++)
            {

                String currentLine = line[i];


                for (k = 0; k < 5; k++)
                {
                    decrypted[i] = decrypted[i] + Convert.ToString(currentLine[randNum.Next(0, 60)]);
                    //Adding the previous character to the new character to help build up the string.
                }

Это было после того, как я понял, что неправильно выстраиваю символы, я решил добавить предыдущего персонажа, и это решило мою проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...