Probleme mit Key bei Triple DES Crypto



Hallo,

ich versuche gerade eine Verschlüsselung/Entschlüsselung per "TripleDESCryptoServiceProvider" Ich habe da nun auch schon Code, mit dem dies gelingt sofern ich den Key automatisch per Defaultkonstruktor erstellen lasse.

Private key As New TripleDESCryptoServiceProvider()

Um meinen verschlüsselten String allerdings wieder auf einem anderem System entschlüsseln zu können, muss ich den Key manuell setzen.

Mache ich dies, erhalte ich allerdings folgende Exception:

System.Security.Cryptography.CryptographicException was unhandled
Message="Der angegebene Schlüssel hat eine ungültige Größe für diesen Algorithmus."

Ausschnitt aus meinem vollständigem Code, wo ich den Key setze:

Der Einstieg in meine Mini-Demo ist die Funktion "PWDHandlingEncrypt", da wird ein String verschlüsselt und dann gleich wieder entschlüsselt. Übergabe- und Return-Wert sind hier in der Demo also identisch ;-)

key.Key = StringToByteArray("012345678901234567890123")
key.IV = StringToByteArray("01234567")

Die Umwandlung in Byte[] erledige ich per eigenen Methoden, die ganz am Ende von meinem Code stehen.

Wäre wirklich spitze, wenn mir jemand helfen könnte...

System.Security.Cryptography.CryptographicException was unhandled
Message="Der angegebene Schlüssel hat eine ungültige Größe für diesen Algorithmus."


Public Class DESCrypto

Private key As New TripleDESCryptoServiceProvider()

Public Function Encrypt(ByVal PlainText As String, ByVal key As SymmetricAlgorithm) As Byte()

Dim ms As New MemoryStream()
Dim encStream As New CryptoStream(ms, key.CreateEncryptor(), CryptoStreamMode.Write)
Dim sw As New StreamWriter(encStream)
sw.WriteLine(PlainText)
sw.Close()
encStream.Close()
Dim buffer As Byte() = ms.ToArray()
ms.Close()

Return buffer
End Function 'Encrypt

Public Function Decrypt(ByVal CypherText() As Byte, ByVal key As SymmetricAlgorithm) As String
Dim ms As New MemoryStream(CypherText)
Dim encStream As New CryptoStream(ms, key.CreateDecryptor(), CryptoStreamMode.Read)
Dim sr As New StreamReader(encStream)
Dim val As String = sr.ReadLine()
sr.Close()
encStream.Close()
ms.Close()

Return val
End Function 'Decrypt

Public Function PWDHandlingEncrypt(ByVal pwd As String) As String
'Dim key As New TripleDESCryptoServiceProvider()

key.Key = StringToByteArray("012345678901234567890123")
key.IV = StringToByteArray("01234567")

Dim buffer As Byte() = Encrypt(pwd, key)

'decrypt
Dim plaintext As String = Decrypt(buffer, key)

Return plaintext
End Function

Private Function StringToByteArray(ByVal str As String) As Byte()
Dim encoding As New System.Text.UnicodeEncoding()
Return encoding.GetBytes(str)
End Function

Private Function ByteArrayToString(ByVal byteArray() As Byte)
Dim enc As New System.Text.UnicodeEncoding()
Dim str As String
str = enc.GetString(byteArray)
Return str
End Function

End Class



Viele Grüße
Klaus
.



Relevant Pages

  • Re: Probleme mit Datum-Format
    ... Dim SQLString As String ... Dim command As New OleDbCommand ... End While ... Wie der Name ja schon sagt, ist Dein SQL-String ein String. ...
    (microsoft.public.de.german.entwickler.dotnet.datenbank)
  • Problem mit Webservice per WDSL/SOAP/Comserver
    ... Dim lcSQL As String ... Dim lcxmlbytesstream As New MemoryStream ... DECLARE INTEGER CRYIni_InitializeEx IN INTEGER Mode, ...
    (microsoft.public.de.german.entwickler.dotnet.asp)
  • Problem mit Webservice per WSDL/SOAP Comserver
    ... Dim lcSQL As String ... Dim lcxmlbytesstream As New MemoryStream ... DECLARE INTEGER CRYIni_InitializeEx IN INTEGER Mode, ...
    (microsoft.public.de.fox)
  • Re: XSLT mit VB.NET?
    ... Function transform(ByVal XML As String, ByVal XSL As String) As String ... Dim XSLT As New XslTransform ...
    (microsoft.public.de.german.entwickler.dotnet.vb)
  • Re: Text verschlüsseln
    ... Ohne den passenden Schlüssel (Key) hätte das erst ... Private TripleDes As New TripleDESCryptoServiceProvider ... Public Sub New(ByVal key As String) ... Dim SHA1 As New SHA1CryptoServiceProvider ...
    (microsoft.public.de.german.entwickler.dotnet.vb)