2012-03-01 86 views
1

我想转换这是vb到C#,我不能纠正代码转换

Public Function encryptPassword(ByVal Password As String, ByVal Salt As String) As String 
    Using HashTool As New SHA512Managed() 
     Dim PasswordAsByte() As Byte = System.Text.Encoding.UTF8.GetBytes(String.Concat(Password, Salt)) 
     Dim EncryptedBytes() As Byte = HashTool.ComputeHash(PasswordAsByte) 
     HashTool.Clear() 
     Return Convert.ToBase64String(EncryptedBytes) 
    End Using 
End Function 

* 我建议这个代码,*

public string encryptPassword(string Password, string Salt) { 
    Using; 
    ((void)(HashTool)); 
    new SHA512Managed(); 
    byte[] PasswordAsByte = System.Text.Encoding.UTF8.GetBytes(string.Concat(Password, Salt)); 
    byte[] EncryptedBytes = HashTool.ComputeHash(PasswordAsByte); 
    HashTool.Clear(); 
    return Convert.ToBase64String(EncryptedBytes); 
} 

,但它不是正确可言,请帮助

+0

的http:// www.developerfusion.com/tools/convert/vb-to-csharp/ – kbvishnu 2012-03-01 06:55:34

回答

4

不知道谁提议代码;它看起来像是一个半分类的反编译器或转换工具。但它非常接近,一旦你消除了怪异......显然有人不知道如何反编译using块。 :P

public string encryptPassword(string Password, string Salt) 
{ 
    using (var HashTool = new SHA512Managed()) 
    { 
     byte[] PasswordAsByte = System.Text.Encoding.UTF8.GetBytes(string.Concat(Password, Salt)); 
     byte[] EncryptedBytes = HashTool.ComputeHash(PasswordAsByte); 
     HashTool.Clear(); 
     return Convert.ToBase64String(EncryptedBytes); 
    } 
} 

(旁注:你散列,不加密EncryptedBytes是严重命名哦,命名约定说,变量名应该以小写字母开头。)

+0

非常感谢。 – user1192078 2012-03-01 06:37:06

+1

@ user1192078:不是问题。如果这有帮助,请随时点击答案旁边的复选框。 :) – cHao 2012-03-01 06:44:57