简体   繁体   English

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

[英]How to convert VB6 encrypting code to c#.net code

I have this VB6 encrypting code created by another developer.我有另一个开发人员创建的 VB6 加密代码。

The problem is I'm not familiar with .NET and I need to convert this code to C#.问题是我不熟悉 .NET,我需要将此代码转换为 C#。 Is there a way help here to convert this code?这里有什么方法可以帮助转换此代码吗?

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

I hope you understand what I mean.我希望你明白我的意思。

I am not able to convert it in Visual Studio because Visual Studio 2013 can't open the project.我无法在 Visual Studio 中转换它,因为 Visual Studio 2013 无法打开该项目。

Try following.尝试跟随。 Has not been tested.没有经过测试。

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

        }
    }

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM