Как преобразовать код шифрования VB6 в код c#. net - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть этот код шифрования VB6, созданный другим разработчиком.

Проблема в том, что я не знаком. NET, и мне нужно преобразовать этот код в C#. Есть ли способ помочь преобразовать этот код?

Private mvarKeyString As String 'local copy
Private mvarMainText As String 'local copy
Public Sub Decrypt()
Attribute Decrypt.VB_Description = "Decrypt MainText text based on KeyString key"
   'Shrink
   On Error GoTo Mali

   Dim intC As Integer
   Dim intD As Integer
   Dim nE As Integer
   Dim lngA As Long
   Dim lngB As Long
   Dim lngI As Long
   Dim lngJ As Long
   Dim lngK As Long
   Dim strB As String

   lngA = Len(mvarMainText)
   lngB = lngA - 1 - (lngA - 1) \ 4
   strB = Space(lngB)
   For lngI = 1 To lngB
      lngJ = lngJ + 1
      intC = Asc(Mid(mvarMainText, lngJ, 1)) - 59
      Select Case lngI Mod 3
      Case 1
          lngK = lngK + 4
          If lngK > lngA Then lngK = lngA
          nE = Asc(Mid(mvarMainText, lngK, 1)) - 59
          intD = ((nE \ 16) And 3) * 64
      Case 2
          intD = ((nE \ 4) And 3) * 64
      Case 0
          intD = (nE And 3) * 64
          lngJ = lngJ + 1
      End Select
      Mid(strB, lngI, 1) = Chr(intC Or intD)
   Next lngI

   mvarMainText = strB

   'doXOR
   'Dim intC As Integer
   intC = 0
   Dim intB As Integer
   'Dim lngI As Long
   lngI = 0
   For lngI = 1 To Len(mvarMainText)
       intC = Asc(Mid(mvarMainText, lngI, 1))
       intB = Int(Rnd * 256)
       Mid(mvarMainText, lngI, 1) = Chr(intC Xor intB)
   Next lngI

Mali:
   Select Case Err
   Case 5
      Beep
      MsgBox Err.Number & " " & Err.Description, vbCritical
      Exit Sub
   End Select
End Sub

Я надеюсь, вы понимаете, о чем я.

Я не могу преобразовать его в Visual Studio, потому что Visual Studio 2013 может ' t открыть проект.

1 Ответ

0 голосов
/ 20 апреля 2020

Попробуйте следующее. Не был проверен.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace ConsoleApplication1
{
    class Program
    {
        static string mvarKeyString; //local copy
        static string mvarMainText; //local copy
        static void Main(string[] args)
        {
        }

        static void Decrypt()
        {
            string VB_Description = "Decrypt MainText text based on KeyString key";

            int intC = 0;
            int intD = 0;
            int nE = 0;
            long lngA = 0;
            long lngB = 0;
            long lngI = 0;
            long lngJ = 0;
            long lngK = 0;
            string strB = "";
            char[] array;
            try
            {
                lngA = mvarMainText.Length;
                lngB = lngA - 1 - (lngA - 1) / 4;
                strB = new string(' ', (int)lngB);
                for(lngI = 1; lngI <= lngB; lngI++)
                {
                    lngJ = lngJ + 1;
                    intC = (int)mvarMainText.Substring((int)lngJ,1).First() - 59;

                    switch(lngI % 3)
                    {
                        case 0 :
                            intD = (nE & 3) * 64;
                            lngJ = lngJ + 1;
                            break;
                        case 1 :  
                          lngK = lngK + 4;

                          if(lngK > lngA)
                          {
                                lngK = lngA;
                          }
                          nE = (int)mvarMainText.Substring((int)lngK,1).First() - 59;
                          intD = ((nE / 16) & 3) * 64;
                            break;
                        case 2 :
                            intD = ((nE / 4) & 3) * 64;
                            break;
                    }

                    array = strB.ToCharArray();
                    array[(int)lngI] = (char)(intC | intD);
                    strB = String.Join("", array);
                }

                mvarMainText = strB;

                //   'doXOR
                //   'Dim intC As Integer
                intC = 0;
                int intB = 0;

                Random Rnd = new Random();
                for (int i = 1; i <= mvarMainText.Length; i++)
                {
                    intC = (int)mvarMainText.Substring(i, 1).First();
                    intB = Rnd.Next() * 256;

                    array = mvarMainText.ToCharArray();
                    array[lngI] = (char)(intC | intB);
                    mvarMainText = String.Join("", array);
                }
            }
            catch(Exception ex)
            {
                Console.WriteLine(ex.Message);
                return;
            }

        }
    }

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