[英]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.