2012-03-14 3 views
0
Public Shared Function DESEncrypt(ByVal Data As String, ByVal Key As String) As Byte() 
    Dim IV() As Byte = {&H12, &H34, &H56, &H78, &H90, &HAB, &HCD, &HEF} 
    Try 
     Dim bykey() As Byte = System.Text.Encoding.UTF8.GetBytes(Left(Key, 8)) 
     Dim InputByteArray() As Byte = System.Text.Encoding.UTF8.GetBytes(Data) 
     Dim des As New DESCryptoServiceProvider 
     Dim ms As New MemoryStream 
     Dim cs As New CryptoStream(ms, des.CreateEncryptor(bykey, IV), CryptoStreamMode.Write) 
     cs.Write(InputByteArray, 0, InputByteArray.Length) 
     cs.FlushFinalBlock() 
     Return ms.ToArray() 
    Catch ex As Exception 
    End Try 
End Function 

Это то, что я имею в настоящее время для моего шифрования DES, но поскольку я довольно новичок в VB.Net, я могу понять, как использовать его Triple DES, а не DESФункция шифрования VB.Net DES, Triple Triple

ответ

1

Попробуйте

 Public Shared Function DESEncrypt(ByVal Data As String, ByVal Key As String) As Byte() 
    Dim IV() As Byte = {&H12, &H34, &H56, &H78, &H90, &HAB, &HCD, &HEF} 
    Try 
     Dim bykey() As Byte = System.Text.Encoding.UTF8.GetBytes(Left(Key, 24)) 


     If String.IsNullOrEmpty(Data) Then 

      Throw New ArgumentException("No data passed", "input") 

     ElseIf bykey Is Nothing OrElse bykey.Length <> 24 Then 

      Throw New ArgumentException("Invalid Key. Key must be 24 bytes length", "key") 

     End If 

     Dim InputByteArray() As Byte = System.Text.Encoding.UTF8.GetBytes(Data) 

     Using ms As New IO.MemoryStream 

      Using des As New Security.Cryptography.TripleDESCryptoServiceProvider 


       Using cs As New Security.Cryptography.CryptoStream(ms, des.CreateEncryptor(bykey, IV), Security.Cryptography.CryptoStreamMode.Write) 

        cs.Write(InputByteArray, 0, InputByteArray.Length) 
        cs.FlushFinalBlock() 
        Return ms.ToArray() 

       End Using 

      End Using 

     End Using 

    Catch ex As Exception 
    End Try 

End Function 
+0

, когда я иду в склеп свой файл, он говорит, что «значение не может быть пустым имя параметра: inArray» – Epicblood

+0

Попробуйте сейчас, только что обновил код, чтобы увидеть, если вы передаете правильные данные. Также ключ TripleDES должен быть длиной 24, а не 8. –

+0

Хорошо, я попробую, когда вернусь домой – Epicblood

Смежные вопросы