2012-03-01 125 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