2013-07-31 2 views
0

Я понял, что это будет довольно прямолинейно, но у меня есть проблема с получением моей функции шифрования AES для возврата Hex String. Я могу заставить его работать, когда я конвертирую его в Base64, но я не могу получить String с значениями Hex. Вот мой код. Любая помощь будет оценена по достоинству.AES Encryption Output Hex vb.net

Dim AES_ENCRYPTION As New System.Security.Cryptography.RijndaelManaged 
Dim CODE_AES As New System.Security.Cryptography.MD5CryptoServiceProvider 
Dim encrypted As String = "" 
Try 
    Dim hash(31) As Byte 
    Dim temp As Byte() = CODE_AES.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(pass)) 
    Array.Copy(temp, 0, hash, 0, 16) 
    Array.Copy(temp, 0, hash, 15, 16) 
    AES_ENCRYPTION.Key = hash 
    AES_ENCRYPTION.Mode = CipherMode.ECB 
    Dim AES_ENCRYPTOR As System.Security.Cryptography.ICryptoTransform = AES_ENCRYPTION.CreateEncryptor 
    Dim Buffer As Byte() = System.Text.ASCIIEncoding.ASCII.GetBytes(input) 
    encrypted = (Conversion.Hex(AES_ENCRYPTOR.TransformFinalBlock(Buffer, 0, Buffer.Length))) 
Catch ex As Exception 
End Try 

Return encrypted 
+0

Выберите ответ из [Как преобразовать байт-массив в шестнадцатеричную строку и наоборот?] (Http://stackoverflow.com/questions/311165/how-do-you-convert-byte-array-to- hexadecimal-string-and-vice versa) и конвертировать его в vb.net – CodesInChaos

+6

Я также хочу отметить, что ваш криптовый слаб (ECB, без MAC, нет IV) и то, как вы относитесь к ключевому бессмысленному. Вы не используете соответствующий засоленный и медленный хэш пароля, например PBKDF2. Я не знаю, что должно сделать ваше странное копирование. Вы беззвучно испортили данные Unicode вне диапазона ASCII. – CodesInChaos

+0

И вот почему я пришел в StackOverFlow. Это не проектный или производственный код. С этим нужно поиграть. Спасибо за ссылку. –

ответ

0

Я пробовал ваш пример, и у меня тоже нет ничего.

Итак, что я пытался вместо encrypted = (Conversion.Hex(AES_ENCRYPTOR.TransformFinalBlock(Buffer, 0, Buffer.Length))), я использовал цикл для преобразования каждого байта в его шестнадцатеричный эквивалент и объединить его в encrypted.

Dim encrypted_byte() As Byte = AES_ENCRYPTOR.TransformFinalBlock(Buffer, 0, Buffer.Length) 
For i As Integer = 0 To encrypted_byte.Length - 1 
    encrypted = encrypted & Hex(encrypted_byte(i)).ToUpper 
Next 

Я не уверен, как вы отформатировали свою шестую строку на Java, но это должно быть как минимум начало.