如何将VB6加密代码转换为c#.net代码

问题描述 投票:-1回答:1

我有另一个开发人员创建的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无法打开项目。

c# .net encryption vb6
1个回答
0
投票

尝试以下。尚未测试。

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;
            }

        }
    }

}
© www.soinside.com 2019 - 2024. All rights reserved.