Re: Encryption / string encoding
From: Rich Bernstein (rab38_at_cornell.edu)
Date: 05/22/03
- Next message: James: "Loading a Textfile public key"
- Previous message: Joe Kaplan: "Re: Code access security...."
- In reply to: Sparky: "Encryption / string encoding"
- Next in thread: Sparky: "Re: Encryption / string encoding"
- Reply: Sparky: "Re: Encryption / string encoding"
- Reply: Sparky: "Re: Encryption / string encoding"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] [ attachment ]
Date: Thu, 22 May 2003 14:39:50 -0400
Looks like you're leaving off the last byte of data in the byte array during
decryption. Change "EncryptedStream.Length - 1" in DecryptStream to
"EncryptedStream.Length".
--
-Rich
"Sparky" <mark.smith@nospam.farmade.com> wrote in message
news:#lytGgHIDHA.612@TK2MSFTNGP11.phx.gbl...
> Hi
>
> I'm using Visual Studio Magazines Crypto class, as described in Jan 2003.
> The problem that I'm having is that I am encrypting a string, and then at
a
> later date decrypting the string. If I debug.print the decrypted string,
it
> is correct but has no end quote displayed.
>
> ie. in the output window, rather than "hello" being displayed, "hello is
> displayed. It looks like the string is now longer than it ought to be but
> has funny characters appended to the end. This affects webservices,. ie. I
> can't pass the string, and also affects sql as I can't use that string in
an
> sql statement. I have tried Trim'ming etc but to no avail. All I want is
my
> original string back....
>
> I've pasted below the encryption / decrption code. I think it's just a
case
> of doing something like Convert.ToString (although that doesn't work but I
> suspect something similar will!)
>
> Any help much appreciated!
>
> Mark
>
>
> ==========================
> Public Function DecryptString(ByVal EncryptedString As String) As String
> If mbKeyIsSet Then
> Return _DecryptString(EncryptedString, True)
> Else
> Throw New Exception(mksKeyNotSetException)
> End If
> End Function
>
>
> Private Function _DecryptString(ByVal EncryptedString As String, ByVal
> Base64 As Boolean) As String
> Try
> 'put string in byte array depending on Base64 flag
> Dim byteArray() As Byte
> If Base64 Then
> byteArray = Convert.FromBase64String(EncryptedString)
> Else
> byteArray = BytesFromString(EncryptedString)
> End If
> 'create the streams, decrypt and return a string
> Dim msEnc As New MemoryStream(byteArray)
> Dim msPlain As MemoryStream = DecryptStream(msEnc)
> Return BytesToString(msPlain.GetBuffer)
> Catch ex As Exception
> 'Debug.WriteLine("_DecryptString Error: " & ex.ToString)
> 'Return String.Empty
> cFmsException.ThrowFMS(Me.GetType.FullName, ex)
> End Try
> End Function
>
> Private Function BytesToString(ByVal byteArray() As Byte) As String
> Return (New UnicodeEncoding).GetString(byteArray)
> 'Return (New ASCIIEncoding).GetString(byteArray)
> End Function
>
>
>
> 'encrypt a string - wrapper without Base64 flag (True by default)
> Public Function EncryptString(ByVal PlainText As String) As String
> If mbKeyIsSet Then
> Return _EncryptString(PlainText, True)
> Else
> Throw New Exception(mksKeyNotSetException)
> End If
> End Function
>
>
> Private Function _EncryptString(ByVal PlainText As String, ByVal Base64
As
> Boolean) As String
> Try
> 'put string in byte array
> Dim byteArray() As Byte = BytesFromString(PlainText)
> 'create streams and encrypt
> Dim msPlain As New MemoryStream(byteArray)
> Dim msEnc As MemoryStream = EncryptStream(msPlain)
> 'return string depending on Base64 flag
> If Base64 Then
> Return Convert.ToBase64String(msEnc.ToArray)
> Else
> Return BytesToString(msEnc.ToArray)
> End If
> Catch ex As Exception
> 'Debug.WriteLine("_EncryptString Error: " & ex.ToString)
> 'Return String.Empty
> cFmsException.ThrowFMS(Me.GetType.FullName, ex)
> End Try
> End Function
>
>
> Public Function EncryptStream(ByVal PlainStream As MemoryStream) As
> MemoryStream
> If mbKeyIsSet Then
> Try
> 'open stream for encrypted data
> Dim encStream As New MemoryStream
> 'create Crypto Service Provider, set key, transform and crypto stream
> Dim oCSP As New RijndaelManaged
> oCSP.Key = mbytKey
> oCSP.IV = mbytIV
> Dim ct As ICryptoTransform = oCSP.CreateEncryptor()
> Dim cs As CryptoStream = New CryptoStream(encStream, ct,
> CryptoStreamMode.Write)
> 'get input stream into byte array
> Dim byteArray() As Byte = PlainStream.ToArray()
> 'write input bytes to crypto stream and close up
> cs.Write(byteArray, 0, CType(PlainStream.Length, Integer))
> cs.FlushFinalBlock()
> cs.Close()
> Return encStream
> Catch ex As Exception
> 'Debug.WriteLine("EncryptStream Error: " & ex.ToString)
> 'Return Stream.Null
> cFmsException.ThrowFMS(Me.GetType.FullName, ex)
> End Try
> Else
> Throw New Exception(mksKeyNotSetException)
> End If
> End Function
>
>
> Public Function DecryptStream(ByVal EncryptedStream As MemoryStream) As
> MemoryStream
> If mbKeyIsSet Then
> Try
> 'create Crypto Service Provider, set key, transform and crypto stream
> Dim oCSP As New RijndaelManaged
> oCSP.Key = mbytKey
> oCSP.IV = mbytIV
> Dim ct As ICryptoTransform = oCSP.CreateDecryptor()
> Dim cs As CryptoStream = New CryptoStream(EncryptedStream, ct,
> CryptoStreamMode.Read)
> 'get bytes from encrypted stream
> Dim byteArray(CType(EncryptedStream.Length - 1, Integer)) As Byte
> Dim iBytesIn As Integer = cs.Read(byteArray, 0,
> CType(EncryptedStream.Length, Integer))
> cs.Close()
> 'create and write the decrypted output stream
> Dim plainStream As New MemoryStream
> plainStream.Write(byteArray, 0, iBytesIn)
> Return plainStream
> Catch ex As Exception
> 'Debug.WriteLine("DecryptStream Error: " & ex.ToString)
> 'Return Stream.Null
> cFmsException.ThrowFMS(Me.GetType.FullName, ex)
> End Try
> Else
> Throw New Exception(mksKeyNotSetException)
> End If
> End Function
>
>
- Next message: James: "Loading a Textfile public key"
- Previous message: Joe Kaplan: "Re: Code access security...."
- In reply to: Sparky: "Encryption / string encoding"
- Next in thread: Sparky: "Re: Encryption / string encoding"
- Reply: Sparky: "Re: Encryption / string encoding"
- Reply: Sparky: "Re: Encryption / string encoding"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] [ attachment ]
Relevant Pages
|