日期:2014-05-18  浏览次数:20453 次

vb代码转ASP.NET C#代码~ 急求 高手指点
Private Const HARD_KEY = &H37
Private Function Encrypt(sValue, sKey)
  Dim intLen
  Dim sTempValue
  Dim sTempKey
  Dim sRValue
  Dim sChar
  sChar = 0
  sTempValue = sValue
  sTempKey = Trim(sKey)
  sRValue = ""
  Dim intX, intY
  For intX = 1 To Len(sTempValue)
  sChar = CInt(Asc(Mid(sTempValue, intX, 1)))
  For intY = 1 To Len(sTempKey)
  sChar = sChar Xor CInt(Asc(Mid(sTempKey, intY, 1))) Xor HARD_KEY
  Next
  sRValue = sRValue & Trim(Chr(sChar))
  Next
  Encrypt = sRValue
End Function

有没有懂C#的高手帮忙把上面的ASP代码转成c# asp.net的代码 下面是我转的 觉得不对,有没有高手能帮忙找错的

int HARD_KEY = Convert.ToInt32("37", 16);
private string Encrypt(string sValue, string sKey)
  {
  string sTempValue = sValue;
  string sTempKey = sKey.Trim();
  string sRValue = "";
  int sChar = 0;
  for(int x = 1;x < sTempValue.Length;x++ )
  {
  sChar = Microsoft.VisualBasic.Strings.Asc(sTempValue.Substring(x, 1));
  for(int y = 1;y <sTempKey.Length;y ++)
  {
  int asc = Microsoft.VisualBasic.Strings.Asc(sTempValue.Substring(y, 1));
  sChar = asc | HARD_KEY;
  }
  sRValue = sRValue + Microsoft.VisualBasic.Strings.Chr(sChar).ToString(); 
  }
  listBox3.Items.Add(sRValue);
  return sRValue;  
  }

------解决方案--------------------
try->
C# code
        int HARD_KEY = Convert.ToInt32("37", 16);
        private string Encrypt(string sValue, string sKey)
        {
            string sTempValue = sValue;
            string sTempKey = sKey.Trim();
            string sRValue = "";
            int sChar = 0;
            for (int x = 1; x < sTempValue.Length; x++)
            {
                sChar = Convert.ToInt32(sTempValue.Substring(x, 1));
                for (int y = 1; y < sTempKey.Length; y++)
                {
                    int asc = Convert.ToInt32(sTempValue.Substring(y, 1));
                    sChar = asc | HARD_KEY;
                }
                sRValue = sRValue + Convert.ToChar(sChar).ToString();
            }
            listBox3.Items.Add(sRValue);
            return sRValue;
        }

------解决方案--------------------
循环x,y从0开始不行吗?
------解决方案--------------------
初步估计是这样子的,另外HARD_KEY的数据类型是啥
C# code

    private string Encrypt(string sValue, string sKey)
    {
        //Dim intLen

        string sRValue = string.Empty;
        char sChar;
        //sChar = 0
        string sTempValue = sValue;
        string sTempKey = sKey.Trim();

        foreach (char x in sTempValue)
        {
            sChar = x;
            foreach (char y in sTempKey)
            {
                int asc = Convert.ToInt32(y);
                sChar = (char)asc | HARD_KEY;
            }
            sRValue = sRValue + sChar.ToString();
        }
        listBox3.Items.Add(sRValue);
        return sRValue;
    }