如何将VB6加密代码转换为c#.net代码
How to convert VB6 encrypting code to c#.net code
我有另一个开发人员创建的 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 无法打开该项目。
试试看。尚未测试。
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;
}
}
}
}
我有另一个开发人员创建的 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 无法打开该项目。
试试看。尚未测试。
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;
}
}
}
}