2011-08-30 42 views
0

可以對此代碼做什麼以使用十六進制而不是ASCII進行加密?ASP.NET加密十六進制字符

加密:

Public Function EncryptAES(ByVal sIn As String, ByVal sKey As String) As String 
    Dim AES As New RijndaelManaged 
    Dim ahashMD5 As New MD5CryptoServiceProvider() 
    AES.Key = ahashMD5.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(sKey)) 
    AES.Mode = CipherMode.ECB 
    Dim AESEncrypt As ICryptoTransform = AES.CreateEncryptor() 
    Dim aBuffer As Byte() = System.Text.ASCIIEncoding.ASCII.GetBytes(sIn) 
    Return Convert.ToBase64String(AESEncrypt.TransformFinalBlock(aBuffer, 0, aBuffer.Length)) 
End Function 

解密:

Public Function DecryptAES(ByVal sOut As String, ByVal sKey As String) As String 
    Dim dAES As New RijndaelManaged 
    Dim dahashMD5 As New MD5CryptoServiceProvider() 
    dAES.Key = dahashMD5.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(sKey)) 
    dAES.Mode = CipherMode.ECB 
    Dim dAESDecrypt As ICryptoTransform = dAES.CreateDecryptor() 
    sOut = Replace(sOut, " ", "+", 1, -1, CompareMethod.Text) 
    Dim daBuffer As Byte() = Convert.FromBase64String(sOut) 
    Return System.Text.ASCIIEncoding.ASCII.GetString(dAESDecrypt.TransformFinalBlock(daBuffer, 0, daBuffer.Length)) 
End Function 

回答

0

可能有這樣做的更簡潔的方法,但類似下面應該助陣:

Dim i = 0 
Dim result = String.Empty 
Dim bytes = ..a byte array containing the hashed bytes... 
For i As Integer = 0 to bytes.Length 
    result += String.Format("{0:x2}", bytes(i)) 
Next 

所以,而不是在將字節轉換爲字符串時使用Return的最後一行使用這種方法並使用Return result

+0

這究竟在哪裏適合上面的代碼? –

+0

對於兩者,或只是加密/解密? –

+0

無論你想返回一個十六進制字符串中的字節。 –

相關問題