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

如何将VB6加密代码转换为c#.net代码,c#,.net,encryption,vb6,C#,.net,Encryption,Vb6,我有另一个开发人员创建的VB6加密代码 问题是我不熟悉.NET,我需要将此代码转换为C。这里有没有转换代码的方法 Private mvarKeyString作为字符串的本地副本 私有mvarMainText作为字符串“本地副本” 公共子解密() Attribute Decrypt.VB_Description=“基于键串密钥解密主文本” “收缩 关于去马里的错误 作为整数的Dim intC 作为整数的Dim intD 作为整数的Dim nE 暗lngA尽可能长 暗lngB尽可能长 昏暗的lngI

我有另一个开发人员创建的VB6加密代码

问题是我不熟悉.NET,我需要将此代码转换为C。这里有没有转换代码的方法

Private mvarKeyString作为字符串的本地副本
私有mvarMainText作为字符串“本地副本”
公共子解密()
Attribute Decrypt.VB_Description=“基于键串密钥解密主文本”
“收缩
关于去马里的错误
作为整数的Dim intC
作为整数的Dim intD
作为整数的Dim nE
暗lngA尽可能长
暗lngB尽可能长
昏暗的lngI就像长的一样
暗淡的lngJ和长的一样
暗lngK为长lngK
将strB设置为字符串
lngA=Len(mvarMainText)
lngB=lngA-1-(lngA-1)\4
strB=空间(lngB)
对于lngI=1到lngB
lngJ=lngJ+1
intC=Asc(Mid(mvarMainText,lngJ,1))-59
选择案例lngI Mod 3
案例1
lngK=lngK+4
如果lngK>lngA,则lngK=lngA
nE=Asc(Mid(mvarMainText,lngK,1))-59
intD=((东北16)和3)*64
案例2
intD=((东北4)和3)*64
案例0
intD=(东北和东北)*64
lngJ=lngJ+1
结束选择
Mid(strB、lngI、1)=Chr(intC或intD)
下一个lngI
mvarMainText=strB
“多索
'作为整数的Dim intC
intC=0
作为整数的Dim intB
“昏暗的lngI,只要
lngI=0
对于lngI=1到Len(mvarMainText)
intC=Asc(Mid(mvarMainText,lngI,1))
intB=Int(Rnd*256)
Mid(mvarMainText,lngI,1)=Chr(intC Xor intB)
下一个lngI
马里:
选择大小写错误
案例5
嘟嘟声
MsgBox错误编号和错误说明(&R),vbCritical
出口接头
结束选择
端接头
我希望你明白我的意思


我无法在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;
            }

        }
    }

}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
命名空间控制台应用程序1
{
班级计划
{
静态字符串mvarKeyString;//本地副本
静态字符串mvarMainText;//本地副本
静态void Main(字符串[]参数)
{
}
静态void Decrypt()
{
string VB_Description=“基于KeyString密钥解密MainText文本”;
intC=0;
intD=0;
int-nE=0;
长lngA=0;
长lngB=0;
长lngI=0;
长lngJ=0;
长lngK=0;
字符串strB=“”;
字符[]数组;
尝试
{
lngA=mvarMainText.长度;
lngB=lngA-1-(lngA-1)/4;
strB=新字符串(“”,(int)lngB);
对于(lngI=1;lngI lngA)
{
lngK=lngA;
}
nE=(int)mvarMainText.Substring((int)lngK,1.First()-59;
intD=((nE/16)和3)*64;
打破
案例2:
intD=((东北/东北)4&3)*64;
打破
}
array=strB.ToCharArray();
数组[(int)lngI]=(char)(intC | intD);
strB=String.Join(“,数组);
}
mvarMainText=strB;
//“多索
//'作为整数的Dim intC
intC=0;
intB=0;
随机Rnd=新随机();

对于(inti=1;我注意到,每个自动转换工具都没有利用语言intrinsics,因此,如果您想进行真正的转换,手动转换是获得高质量代码结果的唯一方法。是否可以转换为c?),问题是缺乏vb6方面的知识vb6代码使用什么样的加密标准?老实说,我不知道ink如果你重新开始的话会更容易,因为我不知道C#是否会支持这种加密。例如:抱歉,数据库中已经有数据,我需要解密密码。这就是为什么我需要将其转换为C#,它不是真正加密的-它会混淆。注意它实际上根本没有使用
mvarKeyString
。所以这里没有涉及密钥。如果您需要加密,这不是它。为我提供system.char alwaystry MVArmanText=“`J[QPTHbn;”mvarkeystring=“040079”的输出,而不是使用字符串。Join(“,数组)