Probleme mit Key bei Triple DES Crypto
- From: Klaus Fichtner <klaus.fichtner_spam_remov_del@xxxxxx>
- Date: Sat, 12 Aug 2006 20:18:17 +0200
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
.
- Prev by Date: Re: Winsock
- Next by Date: Re: Declare SetWindowsHookEx
- Previous by thread: Winsock
- Next by thread: Re: Probleme mit Key bei Triple DES Crypto
- Index(es):
Relevant Pages
|