Re: Decryptionfailed to bring original text back....



Thanks for the reply, Joe.
Thanks for idea...I would try different approach in converting bytes[] to
string using ASCII, UTF32, Unicode, UTF7, UTF8 to know which of them applies
to all possible keys of text (?$%~`&^*(|\]'"). After I did this, I try using
Hashing in encrypt/decrypt text. I just started learning cryptography. What
is exactly Padding does to encryption/decryption process? The encrypted text
has 40 bits so it will add to fill it up to 64 bits, how about if encrypted
data goes over 64 bits, what happen when you decrypt the encrypted data?

Dennis


--
MCP Year 2005, Philippines


"Joe Kaplan (MVP - ADSI)" wrote:

Why do you encode with Unicode and convert back to string with ASCII? That
makes no sense. You have to use the same encoding to go
string->binary->string. Why not also just use UTF8 for both?

Joe K.

--
Joe Kaplan-MS MVP Directory Services Programming
Co-author of "The .NET Developer's Guide to Directory Services Programming"
http://www.directoryprogramming.net
--
"den 2005" <den2005@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:28E79C33-C926-4C12-B79D-014381297C75@xxxxxxxxxxxxxxxx
Hi everybody,

I am not sure where to put this in this forum. So, I posted this at
several topics. I created a class library that has two public methods
Encrypt() and Decrypt(). I reference this dll to a window application. I
used
DESCryptoServiceProvider Algorithm to encrypt and decrypt then with same
Key
and IV. But unable to decrypt it back to original text. This project I
plan
to use all algorithm and Hash. This is Phase One. There is no problem
ingenerating the Key and IV and at both encrypt and decrypt they are the
same. Can anyone spot the mistake and know how to correct this? Thanks.

[code]

//Generate a Key
private static void GenerateDESKey(DESCryptoServiceProvider
desProv,int keySize,bool maxKeySize)
{
if (Key == null)
{
if (keySize != 0)
desProv.KeySize = keySize;
else
{
KeySizes[] keySizeSets = desProv.LegalKeySizes;
int len = keySizeSets.Length;

for (int x = 0; x < len; x++)
{
if (maxKeySize)
keySize = keySizeSets[0].MaxSize;
else
keySize = keySizeSets[0].MinSize;
}
}
desProv.KeySize = keySize;
desProv.GenerateKey();
Key = desProv.Key;
}
}

//Generate a IV
private static void GenerateDESIV(DESCryptoServiceProvider desProv)
{
if (IV == null)
{
desProv.GenerateIV();
IV = desProv.IV;
}
}

//Encrypting String Data passed as parameter and returns it
public string Encrypt(string strData,int keySize, bool bMaxSize)
{
string strEncrypt = string.Empty;
try
{
//Variable Telling if Crypto or Managed object is selected
MemoryStream memStream = new MemoryStream();

CryptoStream cryptStream;
UnicodeEncoding byteConvert = new UnicodeEncoding();
byte[] byteData = byteConvert.GetBytes(strData);

byte[] encryptedData = { };


if (this.CRYPTOCLASS == Algorithm.DES.ToString())
{
this.CreateDESCrypto();
if (des != null)
{
//Generate Cryptographic Key and saved it
GenerateDESKey(des, keySize, bMaxSize);
//Generate Cryptographic IV and saved it
GenerateDESIV(des);

transform =
des.CreateEncryptor((byte[])Key.Clone(),
(byte[])IV.Clone());
}
}
. . . .
//Use the created algorithm object to encrypt data
cryptStream = new CryptoStream(memStream, transform,
CryptoStreamMode.Write);

cryptStream.Write(byteData, 0, byteData.Length);
cryptStream.FlushFinalBlock();

encryptedData = memStream.ToArray();

memStream.Close();
cryptStream.Close();
transform.Dispose();

//Call to dispose data
this.DisposeActiveObjects();
//Convert encrypted bytes[] back to string
strEncrypt = Convert.ToBase64String(encryptedData);

}
catch (Exception ex)
{
this.WriteAppendLogFile(", Encrypt() " + ex.ToString());
}
return strEncrypt;
}

//Decrypting String Data passed as parameter and returns it
public string Decrypt(string strEncrypt)
{
string strData = string.Empty;
try
{
//Variable Telling if Crypto or Managed object is selected

//Check if Key and IV is still has data
if (Key == null || IV == null)
{
return "Cryptographic Key and IV cannot be null.";
}
MemoryStream memStream;
CryptoStream cryptStream;
byte[] encryptedData =
Convert.FromBase64String(strEncrypt);
byte[] decryptedData = new Byte[encryptedData.Length];

if (this.CRYPTOCLASS == Algorithm.DES.ToString())
{
this.CreateDESCrypto();
transform = des.CreateDecryptor((byte[])
Key.Clone(),(byte[])IV.Clone());

}
........

//Use the created algorithm object to encrypt data
memStream = new MemoryStream(encryptedData);
cryptStream = new CryptoStream(memStream, transform,
CryptoStreamMode.Read);

cryptStream.Read(decryptedData, 0, decryptedData.Length);

memStream.Close();
cryptStream.Close();
transform.Dispose();

//Call to dispose data
this.DisposeActiveObjects();
//Convert encrypted bytes[] back to string
//strEncrypt = Convert.ToBase64String(decryptedData);
strData = Encoding.ASCII.GetString(decryptedData);
}
catch (Exception ex)
{
this.WriteAppendLogFile(", Decrypt() " + ex.ToString());
}
return strData;
}
[/code]

den2005




--
MCP Year 2005, Philippines



.



Relevant Pages

  • Re: Decryptionfailed to bring original text back....
    ... The thing to know when you are encrypting string data (as opposed to ... arbitrary binary data) is that if you have a .NET string object, ... Encrypt() and Decrypt. ... //Variable Telling if Crypto or Managed object is ...
    (microsoft.public.dotnet.security)
  • Re: Decryptionfailed to bring original text back....
    ... Why do you encode with Unicode and convert back to string with ASCII? ... Encrypt() and Decrypt. ... desProv.KeySize = keySize; ... //Variable Telling if Crypto or Managed object is selected ...
    (microsoft.public.dotnet.security)
  • Improving the AONT pakagetransform
    ... That aside in in Ron's all or nothing package transform you take a ... a long message of English text you first encrypt it say with AES in a ... At this point say your stuck with 40 bit crypto you then encrypt ... Yet the fact is such an attack even with the larger ...
    (sci.crypt)
  • Re: Protect exe code against being decompiled
    ... encrypt it then it has what it needs to unencrypt it to ... your own crypto code. ... > because users can't run anauthorized executables. ... > Somebody knows some tool to encrypt an EXE file of such ...
    (microsoft.public.security)
  • Re: Need simple lib for asymetric encryption
    ... I would like to encrypt some data with key1 and decrypt it again with key2. ... as 'public key' and to key2 as 'private key'. ... Public key crypto is abysmally slow. ...
    (sci.crypt)