Note that there are some explanatory texts on larger screens.

plurals
  1. POEncrypting a struct, bad data error, what's causing that?
    primarykey
    data
    text
    <p>I'm not sure what I'm doing wrong, the encryption it seems to work but when you get to the decryption says bad data when trying to deserialize it, not sure what I'm doing wrong. I'm new at doing encryption so if it's something really simple I'm sorry. </p> <pre><code> public byte[] Serialize(object obj, string key) { byte[] returnBytes; using (MemoryStream memory = new MemoryStream()) { UTF8Encoding UTF8 = new UTF8Encoding(); TripleDESCryptoServiceProvider crypt = new TripleDESCryptoServiceProvider(); MD5CryptoServiceProvider provider = new MD5CryptoServiceProvider(); byte[] pass = provider.ComputeHash(UTF8.GetBytes(key)); crypt.Key = pass; crypt.Mode = CipherMode.ECB; crypt.Padding = PaddingMode.PKCS7; using (CryptoStream stream = new CryptoStream(memory, crypt.CreateEncryptor(), CryptoStreamMode.Write)) { BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(stream, obj); stream.Close(); memory.Close(); } returnBytes = memory.ToArray(); } return returnBytes; } public object Deserialize(byte[] inBytes, string key) { object returnObj; using (MemoryStream memory = new MemoryStream()) { UTF8Encoding UTF8 = new UTF8Encoding(); TripleDESCryptoServiceProvider crypt = new TripleDESCryptoServiceProvider(); MD5CryptoServiceProvider provider = new MD5CryptoServiceProvider(); byte[] pass = provider.ComputeHash(UTF8.GetBytes(key)); crypt.Key = pass; crypt.Mode = CipherMode.ECB; crypt.Padding = PaddingMode.PKCS7; using (CryptoStream stream = new CryptoStream(memory, crypt.CreateDecryptor(), CryptoStreamMode.Read)) { BinaryFormatter formatter = new BinaryFormatter(); returnObj = formatter.Deserialize(stream); stream.Close(); memory.Close(); } return returnObj; } } </code></pre> <p>This code i did a while back works on strings</p> <pre><code> public string encrypt(string message, string password) { byte[] result; UTF8Encoding UTF8 = new UTF8Encoding(); MD5CryptoServiceProvider provider = new MD5CryptoServiceProvider(); byte[] key = provider.ComputeHash(UTF8.GetBytes(password)); TripleDESCryptoServiceProvider algorithm = new TripleDESCryptoServiceProvider(); algorithm.Key = key; algorithm.Mode = CipherMode.ECB; algorithm.Padding = PaddingMode.PKCS7; byte[] data = UTF8.GetBytes(message); try { ICryptoTransform encryptor = algorithm.CreateEncryptor(); result = encryptor.TransformFinalBlock(data, 0, data.Length); } finally { algorithm.Clear(); provider.Clear(); } return Convert.ToBase64String(result); } public string decrypt(string message, string passsword) { byte[] result; UTF8Encoding UTF8 = new UTF8Encoding(); MD5CryptoServiceProvider provider = new MD5CryptoServiceProvider(); byte[] key = provider.ComputeHash(UTF8.GetBytes(passsword)); TripleDESCryptoServiceProvider algorithm = new TripleDESCryptoServiceProvider(); algorithm.Key = key; algorithm.Mode = CipherMode.ECB; algorithm.Padding = PaddingMode.PKCS7; byte[] data = Convert.FromBase64String(message); try { ICryptoTransform decryptor = algorithm.CreateDecryptor(); result = decryptor.TransformFinalBlock(data, 0, data.Length); } finally { algorithm.Clear(); provider.Clear(); } return UTF8.GetString(result); } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload