Solved

Encrypting a string and the Euro € character

Posted on 2012-04-09
4
368 Views
Last Modified: 2012-04-12
I've inherited some code part of which is to encrypt a string, and then it is saved to a file. See below.

The problem is that when the EURO € (and I presume some other characters) are included in string the are changed to a question mark ?


DES.Key = MD5.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(key))
DES.Mode = CipherMode.ECB
Dim DESEncrypt As ICryptoTransform = DES.CreateEncryptor()
Dim Buffer As Byte() = System.Text.ASCIIEncoding.ASCII.GetBytes(stringToEncrypt)
Return Convert.ToBase64String(DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length))

I'd appreciate help on this as to how to avoid problem.  The fundamental of code can't really change as there are files already saved using this method

Thanks in advance
0
Comment
Question by:rwallacej
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
4 Comments
 
LVL 23

Expert Comment

by:wdosanjos
ID: 37823980
The problem with the System.Text.ASCIIEncoding.ASCII.GetBytes(), because the EURO € is not defined in the ASCII encoding.  You should use System.Text.Encoding.UTF8.GetBytes() instead.  You probably need to update your decrypt code to use System.Text.Encoding.UTF8.GetString() also.
0
 

Author Comment

by:rwallacej
ID: 37824223
thanks for help,

I changed encrypt code per your comments to
            DES.Key = MD5.ComputeHash(Encoding.UTF8.GetBytes(key))
            DES.Mode = CipherMode.ECB
            Dim DESEncrypt As ICryptoTransform = DES.CreateEncryptor()
            Dim Buffer As Byte() = ASCIIEncoding.UTF32.GetBytes(stringToEncrypt)
            Return Convert.ToBase64String(DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length))

the encrypted string is the now different.



I changed the decrypt code from what it was to
                DES.Key = MD5.ComputeHash(System.Text.Encoding.UTF8.GetBytes(key))
                DES.Mode = CipherMode.ECB
                Dim DESDecrypt As Security.Cryptography.ICryptoTransform = DES.CreateDecryptor()
                Dim Buffer As Byte() = Convert.FromBase64String(encryptedString)
                Return ASCIIEncoding.ASCII.GetString(DESDecrypt.TransformFinalBlock(Buffer, 0, Buffer.Length))

but this does not decrypt string right

further help appreciated, thanks
0
 
LVL 23

Accepted Solution

by:
wdosanjos earned 500 total points
ID: 37824259
Your code is still has ASCII encoding references.  Please try this:

Encrypt:
DES.Key = MD5.ComputeHash(Encoding.UTF8.GetBytes(key))
DES.Mode = CipherMode.ECB
Dim DESEncrypt As ICryptoTransform = DES.CreateEncryptor()
Dim Buffer As Byte() = Encoding.UTF8.GetBytes(stringToEncrypt)
Return Convert.ToBase64String(DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length))

Open in new window

Decrypt:
DES.Key = MD5.ComputeHash(System.Text.Encoding.UTF8.GetBytes(key))
DES.Mode = CipherMode.ECB
Dim DESDecrypt As Security.Cryptography.ICryptoTransform = DES.CreateDecryptor()
Dim Buffer As Byte() = Convert.FromBase64String(encryptedString)
Return Encoding.UTF8.GetString(DESDecrypt.TransformFinalBlock(Buffer, 0, Buffer.Length))

Open in new window

0
 

Author Closing Comment

by:rwallacej
ID: 37838965
Thanks
0

Featured Post

MS Dynamics Made Instantly Simpler

Make Your Microsoft Dynamics Investment Count  & Drastically Decrease Training Time by Providing Intuitive Step-By-Step WalkThru Tutorials.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Many of us here at EE write code. Many of us write exceptional code; just as many of us write exception-prone code. As we all should know, exceptions are a mechanism for handling errors which are typically out of our control. From database errors, t…
Today I had a very interesting conundrum that had to get solved quickly. Needless to say, it wasn't resolved quickly because when we needed it we were very rushed, but as soon as the conference call was over and I took a step back I saw the correct …
NetCrunch network monitor is a highly extensive platform for network monitoring and alert generation. In this video you'll see a live demo of NetCrunch with most notable features explained in a walk-through manner. You'll also get to know the philos…
If you’ve ever visited a web page and noticed a cool font that you really liked the look of, but couldn’t figure out which font it was so that you could use it for your own work, then this video is for you! In this Micro Tutorial, you'll learn yo…

623 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question