Visual Basic Forum

Visual Basic Forum
für VB6 und VB.NET Programmierer
 
RegistrierenRegistrieren  LoginLogin
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB.NET] Fragen - Antworten
Autor
Nachricht
aMphetaMin
Tutorial Leser
Tutorial Leser

Anmeldedatum: 29.06.2008
Beiträge: 33

Datei verschlüsseln mit Rijndael
Verfasst am: 07.07.2008, 18:05

So Leute ich zerbreche hier meinen Kopf^^ Habe auch mit Daniel schon geschrieben und er hat mir paar kleine Tipps gegeben^^ Aber ich möchte ihn nicht weiter nerven :p

So ich möchte zb. eine EXE Datei mit Rijndael verschlüsseln und wieder entschlüsseln wenn man auf einen Button klickt.

Habe im NEtz gesucht und etwas gefundne werde aber nicht schlau daraus.
 
sollniss
Überflieger
Überflieger

Anmeldedatum: 01.05.2008
Beiträge: 699


Verfasst am: 07.07.2008, 18:09

http://www.codeproject.com/KB/security/EncryptFile.aspx
http://www.freevbcode.com/ShowCode.Asp?ID=4520
http://www.activevb.de/tipps/vbnettipps/tipp0073.html
http://entwickler-forum.de/showthread.php?t=51736
etc.

...und du hast bei Google nichts gefunden?
 
aMphetaMin
Tutorial Leser
Tutorial Leser

Anmeldedatum: 29.06.2008
Beiträge: 33


Verfasst am: 07.07.2008, 18:10

(sollniss;5181)

Danke aber lies mal den letzten Satz;)

Naja egal^^

nehmen wir das mal: http://www.activevb.de/tipps/vbnettipps/tipp0073.html
Sieht doch ganz gut aus.

Wozu die textbox Cleartxt und Ciphertxt?
 
aMphetaMin
Tutorial Leser
Tutorial Leser

Anmeldedatum: 29.06.2008
Beiträge: 33


Verfasst am: 10.07.2008, 11:16

Sry 4 Doppelpost aber ich habe jetzt mehr als 2 Tage geewartet^^

So hab den Code verstanden. Dieser Source verschlüsselt einen eingegeben Text und gibt ihn in der Chiphertxt aus.

Aber wie stelle ich es an das ich eine EXE verschlüsseln kann damit?
 
bla
Coder
Coder

Anmeldedatum: 02.05.2008
Beiträge: 267


Verfasst am: 10.07.2008, 11:25

is zwar vb6 aber hoffe die funktionsweise wird klar:

Visual Basic: [code]Dim buf As String

Open "C:test.exe" For Binary As #1
buf = Space(LOF(1))
Get #1, , buf
Close #1

buf = Verschlüsselung(buf, "passwort")

DoEvents

Open "C:test.exe" For Binary As #1
Put #1, , buf
Close #1[/code]
 
aMphetaMin
Tutorial Leser
Tutorial Leser

Anmeldedatum: 29.06.2008
Beiträge: 33


Verfasst am: 10.07.2008, 12:38

(bla;5326)
is zwar vb6 aber hoffe die funktionsweise wird klar:

Visual Basic: [code]Dim buf As String

Open "C:test.exe" For Binary As #1
buf = Space(LOF(1))
Get #1, , buf
Close #1

buf = Verschlüsselung(buf, "passwort")

DoEvents

Open "C:test.exe" For Binary As #1
Put #1, , buf
Close #1[/code]



Hilft mir nicht wirklich weiter, aber trotzdem danke Wink n VB könnte ich es auch doch vb.NET ist ein wenig anders^^
 
ZiG
Überflieger
Überflieger

Anmeldedatum: 16.04.2008
Beiträge: 421


Verfasst am: 10.07.2008, 16:53

(aMphetaMin;5325)
Aber wie stelle ich es an das ich eine EXE verschlüsseln kann damit?


Datei in eine string variable einlesen?
 
tr4st
Überflieger
Überflieger

Anmeldedatum: 16.04.2008
Beiträge: 486


Verfasst am: 10.07.2008, 23:03

Visual Basic: [code]Imports System
Imports System.IO
Imports System.Text
Imports System.Security.Cryptography

Public Class Rijndael

'
' Encrypts specified plaintext using Rijndael symmetric key algorithm
' and returns a base64-encoded result.
'

'
' Plaintext value to be encrypted.
'
'
' Passphrase from which a pseudo-random password will be derived. The
' derived password will be used to generate the encryption key.
' Passphrase can be any string. In this example we assume that this
' passphrase is an ASCII string.
'
'
' Salt value used along with passphrase to generate password. Salt can
' be any string. In this example we assume that salt is an ASCII string.
'
'
' Hash algorithm used to generate password. Allowed values are: "MD5" and
' "SHA1". SHA1 hashes are a bit slower, but more secure than MD5 hashes.
'
'
' Number of iterations used to generate password. One or two iterations
' should be enough.
'
'
' Initialization vector (or IV). This value is required to encrypt the
' first block of plaintext data. For RijndaelManaged class IV must be
' exactly 16 ASCII characters long.
'
'
' Size of encryption key in bits. Allowed values are: 128, 192, and 256.
' Longer keys are more secure than shorter keys.
'
'
' Encrypted value formatted as a base64-encoded string.
'

Public Shared Function Encrypt(ByVal plainText As String, _
ByVal passPhrase As String, _
ByVal saltValue As String, _
ByVal hashAlgorithm As String, _
ByVal passwordIterations As Integer, _
ByVal initVector As String, _
ByVal keySize As Integer) _
As String

' Convert strings into byte arrays.
' Let us assume that strings only contain ASCII codes.
' If strings include Unicode characters, use Unicode, UTF7, or UTF8
' encoding.
Dim initVectorBytes As Byte()
initVectorBytes = Encoding.ASCII.GetBytes(initVector)

Dim saltValueBytes As Byte()
saltValueBytes = Encoding.ASCII.GetBytes(saltValue)

' Convert our plaintext into a byte array.
' Let us assume that plaintext contains UTF8-encoded characters.
Dim plainTextBytes As Byte()
plainTextBytes = Encoding.UTF8.GetBytes(plainText)

' First, we must create a password, from which the key will be derived.
' This password will be generated from the specified passphrase and
' salt value. The password will be created using the specified hash
' algorithm. Password creation can be done in several iterations.
Dim password As PasswordDeriveBytes
password = New PasswordDeriveBytes(passPhrase, saltValueBytes, hashAlgorithm, passwordIterations)

' Use the password to generate pseudo-random bytes for the encryption
' key. Specify the size of the key in bytes (instead of bits).
Dim keyBytes As Byte()
keyBytes = password.GetBytes(keySize / Cool

' Create uninitialized Rijndael encryption object.
Dim symmetricKey As RijndaelManaged
symmetricKey = New RijndaelManaged()

' It is reasonable to set encryption mode to Cipher Block Chaining
' (CBC). Use default options for other symmetric key parameters.
symmetricKey.Mode = CipherMode.CBC

' Generate encryptor from the existing key bytes and initialization
' vector. Key size will be defined based on the number of the key
' bytes.
Dim encryptor As ICryptoTransform
encryptor = symmetricKey.CreateEncryptor(keyBytes, initVectorBytes)

' Define memory stream which will be used to hold encrypted data.
Dim memoryStream As MemoryStream
memoryStream = New MemoryStream()

' Define cryptographic stream (always use Write mode for encryption).
Dim cryptoStream As CryptoStream
cryptoStream = New CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write)
' Start encrypting.
cryptoStream.Write(plainTextBytes, 0, plainTextBytes.Length)

' Finish encrypting.
cryptoStream.FlushFinalBlock()

' Convert our encrypted data from a memory stream into a byte array.
Dim cipherTextBytes As Byte()
cipherTextBytes = memoryStream.ToArray()

' Close both streams.
memoryStream.Close()
cryptoStream.Close()

' Convert encrypted data into a base64-encoded string.
Dim cipherText As String
cipherText = Convert.ToBase64String(cipherTextBytes)

' Return encrypted string.
Encrypt = cipherText
End Function

'
' Decrypts specified ciphertext using Rijndael symmetric key algorithm.
'

'
' Base64-formatted ciphertext value.
'
'
' Passphrase from which a pseudo-random password will be derived. The
' derived password will be used to generate the encryption key.
' Passphrase can be any string. In this example we assume that this
' passphrase is an ASCII string.
'
'
' Salt value used along with passphrase to generate password. Salt can
' be any string. In this example we assume that salt is an ASCII string.
'
'
' Hash algorithm used to generate password. Allowed values are: "MD5" and
' "SHA1". SHA1 hashes are a bit slower, but more secure than MD5 hashes.
'
'
' Number of iterations used to generate password. One or two iterations
' should be enough.
'
'
' Initialization vector (or IV). This value is required to encrypt the
' first block of plaintext data. For RijndaelManaged class IV must be
' exactly 16 ASCII characters long.
'
'
' Size of encryption key in bits. Allowed values are: 128, 192, and 256.
' Longer keys are more secure than shorter keys.
'
'
' Decrypted string value.
'

'
' Most of the logic in this function is similar to the Encrypt
' logic. In order for decryption to work, all parameters of this function
' - except cipherText value - must match the corresponding parameters of
' the Encrypt function which was called to generate the
' ciphertext.
'

Public Shared Function Decrypt(ByVal cipherText As String, _
ByVal passPhrase As String, _
ByVal saltValue As String, _
ByVal hashAlgorithm As String, _
ByVal passwordIterations As Integer, _
ByVal initVector As String, _
ByVal keySize As Integer) As String

' Convert strings defining encryption key characteristics into byte
' arrays. Let us assume that strings only contain ASCII codes.
' If strings include Unicode characters, use Unicode, UTF7, or UTF8
' encoding.
Dim initVectorBytes As Byte()
initVectorBytes = Encoding.ASCII.GetBytes(initVector)

Dim saltValueBytes As Byte()
saltValueBytes = Encoding.ASCII.GetBytes(saltValue)

' Convert our ciphertext into a byte array.
Dim cipherTextBytes As Byte()
cipherTextBytes = Convert.FromBase64String(cipherText)

' First, we must create a password, from which the key will be
' derived. This password will be generated from the specified
' passphrase and salt value. The password will be created using
' the specified hash algorithm. Password creation can be done in
' several iterations.
Dim password As PasswordDeriveBytes
password = New PasswordDeriveBytes(passPhrase, saltValueBytes, hashAlgorithm, passwordIterations)

' Use the password to generate pseudo-random bytes for the encryption
' key. Specify the size of the key in bytes (instead of bits).
Dim keyBytes As Byte()
keyBytes = password.GetBytes(keySize / Cool

' Create uninitialized Rijndael encryption object.
Dim symmetricKey As RijndaelManaged
symmetricKey = New RijndaelManaged()

' It is reasonable to set encryption mode to Cipher Block Chaining
' (CBC). Use default options for other symmetric key parameters.
symmetricKey.Mode = CipherMode.CBC

' Generate decryptor from the existing key bytes and initialization
' vector. Key size will be defined based on the number of the key
' bytes.
Dim decryptor As ICryptoTransform
decryptor = symmetricKey.CreateDecryptor(keyBytes, initVectorBytes)

' Define memory stream which will be used to hold encrypted data.
Dim memoryStream As MemoryStream
memoryStream = New MemoryStream(cipherTextBytes)

' Define memory stream which will be used to hold encrypted data.
Dim cryptoStream As CryptoStream
cryptoStream = New CryptoStream(memoryStream, decryptor, CryptoStreamMode.Read)

' Since at this point we don't know what the size of decrypted data
' will be, allocate the buffer long enough to hold ciphertext;
' plaintext is never longer than ciphertext.
Dim plainTextBytes As Byte()
ReDim plainTextBytes(cipherTextBytes.Length)

' Start decrypting.
Dim decryptedByteCount As Integer
decryptedByteCount = cryptoStream.Read(plainTextBytes, 0, plainTextBytes.Length)

' Close both streams.
memoryStream.Close()
cryptoStream.Close()

' Convert decrypted data into a string.
' Let us assume that the original plaintext string was UTF8-encoded.
Dim plainText As String
plainText = Encoding.UTF8.GetString(plainTextBytes, 0, decryptedByteCount)

' Return decrypted string.
Decrypt = plainText
End Function
End Class[/code]

Da hast du eine Rijndael Klasse.
Anwendungsweise:
Visual Basic: [code]Dim passPhrase, saltValue, hashAlgorithm, initVector, usr, pwd As String
Dim passwordIterations, keySize As Integer

passPhrase = "X9o3j5!Y86iU!pPe8u7,5lY!" ' irgend ein String mit dem verschlüsselt wird
saltValue = "X9o3j6!Y86iU!pDe8u0,5lY!" ' irgend ein String mit dem verschlüsselt wird
hashAlgorithm = "SHA1" ' kann MD5 sein
passwordIterations = 2470 ' irgend ein Wert
initVector = "@1B2c3D4e3q9z4p7" ' muss ein 16bit String sein
keySize = 256 ' kann auch 192 oder 128 sein

Rijndael.Encrypt("Plaintext zum verschlüsseln", passPhrase, saltValue, hashAlgorithm, passwordIterations, initVector, keySize)
Rijndael.Decrypt("Hash zum entschlüsseln", passPhrase, saltValue, hashAlgorithm, passwordIterations, initVector, keySize)[/code]
 
alexanderjanjic
Newbie
Newbie

Anmeldedatum: 22.06.2008
Beiträge: 19


Verfasst am: 14.07.2008, 20:57

Des verschlüsselt doch ein Text er will doch eine Datei verschlüsseln wie geht des ?
 
sollniss
Überflieger
Überflieger

Anmeldedatum: 01.05.2008
Beiträge: 699


Verfasst am: 14.07.2008, 21:00

Äääähh.....

Wenn man die Datei einliest, isses auch nicht viel mehr als ein "Text".
 
alexanderjanjic
Newbie
Newbie

Anmeldedatum: 22.06.2008
Beiträge: 19


Verfasst am: 14.07.2008, 21:23

Ja aber ich mein das man z.B. Browse hat drauf drückt und eine Datei auswählt, sie wird verschlüsselt und bei ausführen entschlüsselt.

Wie würde das aussehen?
 
aMphetaMin
Tutorial Leser
Tutorial Leser

Anmeldedatum: 29.06.2008
Beiträge: 33


Verfasst am: 15.07.2008, 09:28


Das hört sich nach einem Malware Crypter an. und dazu benötigst du eine Stub. Aber hier wird dir für sowas keine Hilfestellung gegeben.
 
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB.NET] Fragen - Antworten

Tags: rijndael verschlüsseln, datei

 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Button/Text 957 18.06.2009, 16:21
Keine neuen Beiträge E-Mail bekomm nach Button klicken 712 02.10.2007, 17:45
Keine neuen Beiträge Bestimmten "Button" auf Website klicken 1679 14.09.2007, 21:27
Keine neuen Beiträge webbrowser/ webformular button klicken 1610 23.07.2007, 23:07
Keine neuen Beiträge Button drücken.. 841 01.07.2007, 13:19
 


[ Time: 0.4258s ][ Queries: 113 (0.2098s) ][ GZIP on - Debug on ]