Re: Need help decrypting

From: Steve Long (Steve_Noneya_at_NoSpam.com)
Date: 02/23/05

  • Next message: Joe Kaplan \(MVP - ADSI\): "Re: Need help decrypting"
    Date: Tue, 22 Feb 2005 15:59:42 -0800
    
    

    Okay, so if it really is a password that is stored in an xml file and I
    encrypt that password file and store that result, isn't that just an ascii
    string? My goal here was to store an encrypted password in an xml file and
    then decrypt that on application load up. Is that perhaps not the best
    approach for this need? Perhaps I need to store the encrypted password in a
    binary file??? Is that maybe what you are saying?

    Steve

    "Joe Kaplan (MVP - ADSI)" <joseph.e.kaplan@removethis.accenture.com> wrote
    in message news:uZJZ5iTGFHA.4004@tk2msftngp13.phx.gbl...
    > Also, there is a weird mix of ASCII and UTF8 in there that is asking for
    > trouble it seems.
    >
    > - Typically, if you have unicode strings (which you do in .NET) you want
    to
    > encrypt them, you want to use Unicode or UTF8 encodings to convert them
    into
    > byte arrays for encryption. Using ASCII may cause data loss.
    > - When you decypt encrypted data into a byte array and that data
    represents
    > a string, you MUST use the same encoding you used to create the original
    > byte array when you encrypted. UTF8 in -> UTF8 out; Unicode in -> Unicode
    > out.
    > - If you have a byte array of arbitrary data (the result of encryption, a
    > hash or other random number generator) and you want to store that as a
    > string, you must use a string format that is designed to hold arbitrary
    > binary data. Base64 is the normal way to do that
    (Convert.ToBase64String).
    > Trying to store random binary data as a string using ASCII, UTF8 or
    Unicode
    > encodings is likely to produce poor results.
    >
    > I think paying attention to all of those will help make this more
    > successful. Also, not reinventing the wheel is good. Here's a sample
    from
    > an MS employee that might help:
    > http://www.dotnetthis.com/Articles/Crypto.htm
    >
    > There are many other samples out there as well.
    >
    > Joe K.
    >
    > "Valery Pryamikov" <valery@harper.no> wrote in message
    > news:e$%23zkVTGFHA.1408@TK2MSFTNGP10.phx.gbl...
    > > Just a brief look (not checking anyting else): in your encrypt function
    > > you derive bytes from "passwd" password, while in your decrypt function
    > > you use "pa[]ss!!wo//dd".
    > >
    > > -Valery.
    > > http://www.harper.no/valery
    > >
    > >
    > > "Steve Long" <Steve_Noneya@NoSpam.com> wrote in message
    > > news:%23$4F0oPGFHA.2032@tk2msftngp13.phx.gbl...
    > >> Hello,
    > >> I'm wondering if somebody can help me figure out how to decrypt data. I
    > >> seem
    > >> to be able to encrypt data but have not been able to decrypt the very
    > >> data
    > >> that I've encrypted. I know it's because I'm just not understanding
    the
    > >> whole process but I'm obviously just not getting it. Here's the
    > >> encryption
    > >> function I'm using:
    > >>
    > >> Private Sub Encryptpwd()
    > >> Dim cdk As PasswordDeriveBytes = New PasswordDeriveBytes("passwd",
    > >> Nothing)
    > >> Dim iv() As Byte = {0, 0, 0, 0, 0, 0, 0, 0}
    > >> Dim key() As Byte = cdk.CryptDeriveKey("RC2", "SHA1", 128, iv)
    > >>
    > >> Console.WriteLine(key.Length * 8)
    > >> ' Set up an RC2 object to encrypt with the derived key
    > >> Dim rc2 As RC2CryptoServiceProvider = New RC2CryptoServiceProvider
    > >> rc2.Key = key
    > >> Dim b() As Byte = {21, 22, 23, 24, 25, 26, 27, 28}
    > >> rc2.IV = b
    > >> Dim plaintext() As Byte = Encoding.UTF8.GetBytes("iiMap")
    > >> Dim ms As New MemoryStream
    > >> Dim cs As CryptoStream = New CryptoStream(ms,
    rc2.CreateEncryptor(),
    > >> _
    > >> CryptoStreamMode.Write)
    > >> cs.Write(plaintext, 0, plaintext.Length)
    > >> cs.Close()
    > >> Dim result() As Byte = ms.ToArray()
    > >> Dim asc As New ASCIIEncoding
    > >> txtResult.Text = asc.GetString(result)
    > >> ms.Close()
    > >> End Sub
    > >>
    > >> When I try to decrypt the text that's in txtResult.Text, my result is
    > >> always
    > >> and empty string:
    > >>
    > >> Private Sub Decryptpwd()
    > >> Dim cdk As PasswordDeriveBytes = New
    > >> PasswordDeriveBytes("pa[]ss!!wo//dd", Nothing)
    > >> Dim iv() As Byte = {0, 0, 0, 0, 0, 0, 0, 0}
    > >> Dim key() As Byte = cdk.CryptDeriveKey("RC2", "SHA1", 128, iv)
    > >>
    > >> Console.WriteLine(key.Length * 8)
    > >> ' Set up an RC2 object to encrypt with the derived key
    > >> Dim rc2 As RC2CryptoServiceProvider = New RC2CryptoServiceProvider
    > >> rc2.Key = key
    > >> Dim b() As Byte = {21, 22, 23, 24, 25, 26, 27, 28}
    > >> rc2.IV = b
    > >> Dim plaintext() As Byte = Encoding.UTF8.GetBytes(txtResult.Text)
    > >>
    > >> Dim ms As New MemoryStream
    > >> Dim cs As CryptoStream = New CryptoStream(ms,
    rc2.CreateDecryptor(),
    > >> _
    > >> CryptoStreamMode.Write)
    > >> cs.Write(plaintext, 0, plaintext.Length)
    > >> Dim result(plaintext.Length - 1) As Byte
    > >> ms.Read(result, 0, result.Length - 1)
    > >> Dim asc As New ASCIIEncoding
    > >> txtDecrypt.Text = asc.GetString(result)
    > >> cs.Close()
    > >> ms.Close()
    > >> End Sub
    > >>
    > >> I would very much appreciate someone setting me straight on this issue.
    > >> Thanks in advance
    > >> Steve
    > >>
    > >>
    > >>
    > >
    >
    >


  • Next message: Joe Kaplan \(MVP - ADSI\): "Re: Need help decrypting"

    Relevant Pages

    • Re: Column level encryption - IDS 10
      ... you can not store an encrypted number in only 4 bytes. ... Undermining that effect is last comment on slide 17 "do not normally encrypt 4-byte integer numbers", which can be taken as meaning 'you cannot encrypt 4-byte integers'. ... Ignoring blobs, you will store the encrypted data in a CHARcolumn; if you are dealing with blobs, you'll still store those in blob columns. ... If you are planning to encrypt a 4-byte integer, you need to realize that it will be converted by the ENCRYPT_XXX function into a string value - IDS is good at that. ...
      (comp.databases.informix)
    • Re: web.config best pratices for passwords
      ... Best practice is to salt and encrypt and ... store somewhere such as the global.asax.vb file. ... I decrypt and build the string on demand. ... > I have a few different applications that store passwords for various ...
      (microsoft.public.dotnet.faqs)
    • Re: web.config best pratices for passwords
      ... Best practice is to salt and encrypt and ... store somewhere such as the global.asax.vb file. ... I decrypt and build the string on demand. ... > I have a few different applications that store passwords for various ...
      (microsoft.public.dotnet.framework.aspnet)
    • Re: Storing encrypted password in xml file
      ... Convert.ToBase64Stringmethod with your binary array) you should be able ... to put it in a well formed XML file. ... > I have used the RC2CryptoServiceProvider class, but when i convert the> encrypted byte array to a string to store in my xml file, itcontains some illegal characters which are not allowed in an xml> file. ... > Anyone have any ideas of how to encrypt the password and still be able to> store it in the xml file. ...
      (microsoft.public.dotnet.security)
    • Re: Encryption
      ... Some people like to encrypt the key & store it in the registry or you could ... encrypt it & store in a XML file in the user's Application Data folder. ...
      (microsoft.public.dotnet.languages.vb)