School Assignment? Project Due Tomorrow? Chat LIVE With A Programming Expert!
Welcome to Dream.In.Code
Become an Expert!

Join 340,138 Programmers for FREE! Get instant access to thousands of experts, tutorials, code snippets, and more! There are 3,864 people online right now. Registration is fast and FREE... Join Now!



Encryption/Decryption with RijndaelManaged

Page 1 of 1

Encryption/Decryption with RijndaelManaged Rate Topic: -----

#1 chrixko  Icon User is offline

  • D.I.C Head
  • PipPip
  • Group: Members
  • Posts: 52
  • Joined: 25-November 08


Dream Kudos: 0

Posted 28 May 2009 - 08:05 AM

Hi @ all :)

I have a Problem to Decrypt my crypted files :
e.g. if I encrypt this text:
BÖAR BÖLASDJASPDJAPSDJPASDJPASD
asdj
...



And Decrypt it:
AB0_í-M3‚Sþr¯WPJAPSDJPASDJPASD
asdj
...


The first chars are wrong! :blink:



My Code to Encrypt and Decrypt :
Encrypt:
  Public Shared Sub EncryptFile(ByVal sSource As String, ByVal sTarget As String, Optional ByVal BufferSize As Long = 4096)
		Dim ErrorHappened As Boolean = False
		Dim OldFileStream As FileStream
		Dim NewFileStream As FileStream
		Dim CrypStream As CryptoStream
	Try
		Dim key As String = "mypw"
		Dim skey() As Byte = SecurityFunctions.GetPasswordHashInBytes(key)


		 OldFileStream = New FileStream(sSource, FileMode.Open)
		 NewFileStream = New FileStream(sTarget, FileMode.Create)
		Dim RijndaelManaged As New RijndaelManaged

		RijndaelManaged.Key = skey
		RijndaelManaged.GenerateIV()


		  CrypStream = New CryptoStream(NewFileStream, RijndaelManaged.CreateEncryptor(skey, RijndaelManaged.IV), CryptoStreamMode.Write)
		Dim Data(BufferSize) As Byte
		Dim Buffer As Long
		Dim BufferCount As Long
		Dim FileLen As Long = OldFileStream.Length

		Do
			If BufferCount >= FileLen - BufferSize Then
				ReDim Data(FileLen - BufferCount)
				Buffer = OldFileStream.Read(Data, 0, FileLen - BufferCount)
				CrypStream.Write(Data, 0, Buffer)
				Exit Do
			End If

			Buffer = OldFileStream.Read(Data, 0, BufferSize)
			CrypStream.Write(Data, 0, BufferSize)
			BufferCount += Buffer
		Loop


		CrypStream.Close()

	Catch ex As Exception
		MsgBox("Error!" & vbCrLf & ex.Message)
		ErrorHappened = True
	Finally
	  NewFileStream.Close()
	  OldFileStream.Close()
	End Try
	If ErrorHappened Then
	  My.Computer.FileSystem.DeleteFile(sTarget)
	End If
  End Sub



Decrypt:
	Public Shared Sub DecryptFile(ByVal sSource As String, ByVal sTarget As String, Optional ByVal BufferSize As Long = 4096)
		Dim ErrorHappened As Boolean = False
		Dim OldFileStream As FileStream
		Dim NewFileStream As FileStream
		Dim CrypStream As CryptoStream
	Try

 
		Dim key As String = "mypw"
		Dim skey() As Byte = SecurityFunctions.GetPasswordHashInBytes(key)

		OldFileStream = New FileStream(sSource, FileMode.Open)
		NewFileStream = New FileStream(sTarget, FileMode.Create)
		Dim RijndaelManaged As New RijndaelManaged()


		RijndaelManaged.Key = skey
		RijndaelManaged.GenerateIV()

		CrypStream = New CryptoStream(OldFileStream, RijndaelManaged.CreateDecryptor(skey, RijndaelManaged.IV), CryptoStreamMode.Read)

		Dim Data(BufferSize) As Byte
		Dim Buffer As Long
		Dim BufferCount As Long
		Dim FileLen As Long = OldFileStream.Length

		Do
			If BufferCount >= FileLen - BufferSize Then
				ReDim Data(FileLen - BufferCount)
				Buffer = CrypStream.Read(Data, 0, FileLen - BufferCount)
				NewFileStream.Write(Data, 0, Buffer)
				Exit Do
			End If

			Buffer = CrypStream.Read(Data, 0, BufferSize)
			NewFileStream.Write(Data, 0, BufferSize)

			BufferCount += Buffer
		Loop
		CrypStream.Close()
	Catch ex As Exception

		MsgBox("Error!" & vbCrLf & ex.Message)
		ErrorHappened = True
	Finally
		NewFileStream.Close()
		OldFileStream.Close()
	End Try
	If ErrorHappened Then
	  My.Computer.FileSystem.DeleteFile(sTarget)
	End If
  End Sub



Someone an Idea ?

Thanks ;)

This post has been edited by chrixko: 28 May 2009 - 08:36 AM

Was This Post Helpful? 0
  • +
  • -


#2 chrixko  Icon User is offline

  • D.I.C Head
  • PipPip
  • Group: Members
  • Posts: 52
  • Joined: 25-November 08


Dream Kudos: 0

Posted 28 May 2009 - 11:22 AM

Ok, changed the code and this problem is solved.
But now chars like "§" and "ÄÖÜ" are saved as "?" or these little rectangles
What I should do now ?

My new code :

  Private Shared Rijndael As New RijndaelManaged()

  Public Shared Sub Encrypt(ByVal Source As String, ByVal Destination As String)
	Dim content As String
	Rijndael.Key = SecurityFunctions.GetPasswordHashInBytes("mypw")

	Dim Transform As ICryptoTransform = Rijndael.CreateEncryptor()
	Dim fs As New FileStream(Destination, FileMode.Create)
	fs.Write(Rijndael.IV, 0, Rijndael.IV.Length)
	Dim cs As New CryptoStream(fs, Transform, CryptoStreamMode.Write)

	Dim w As New StreamWriter(cs)
	Dim sr As New StreamReader(Source)
	content = sr.ReadToEnd
	w.Write(content)
	w.Flush()
	sr.Close()
	cs.FlushFinalBlock()
	w.Close()
	Array.Clear(Rijndael.Key, 0, Rijndael.Key.Length)
  End Sub

  Public Shared Sub Decrypt(ByVal Source As String, ByVal Destination As String)
	Dim content As String
	Dim fs As New FileStream(Source, FileMode.Open)

	Dim iv() As Byte
	ReDim iv(Rijndael.IV.Length - 1)
	fs.Read(iv, 0, iv.Length)
	Rijndael.IV = iv

	Dim transform As ICryptoTransform = Rijndael.CreateDecryptor(SecurityFunctions.GetPasswordHashInBytes("mypw"), Rijndael.IV)

	Dim cs As New CryptoStream(fs, transform, CryptoStreamMode.Read)

	Dim r As New StreamReader(cs)
	content = r.ReadToEnd
	r.Close()
	Dim sw As New StreamWriter(Destination)
	sw.Write(content)
	sw.Close()
  End Sub


Was This Post Helpful? 0
  • +
  • -

Page 1 of 1


Fast Reply

  

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users



Live Help!

Be Social

Dream.In.Code RSS Feed Dream.In.Code LinkedIn Group Follow Us On Twitter Fan Us On Facebook

Tutorials

Programming

Web Development

Reference Sheets

Code Snippets

DIC Chatroom

Bye Bye Ads

Monthly Drawing

Thumb Drive

Top Contributors

Top 10 Kudos This Month