Hej!Kryptera data mot SQL - Server?
Jag har Enkrypt / Dekrypt funktioner skrivna i C# som fugerar utan några som helst problem lokalt i mitt ASP.NET - Projekt jag håller på med. Men så fort jag försöker spara den krypterade datan i SQL-Server så får jag problem med Dekrypteringen?!
Felmeddelandet blir: "Längden på de data som ska dekrypteras är ogiltig."
Så här ser funktionerna ut:
public string Encrypt(string clearText, byte[] key, byte[] iv)
{
// string clearTexten = getBase64Encoded(clearText);
byte[] clearTextAsByte = new byte[clearText.Length];
// Change myText to byte.
UTF8Encoding encoding = new UTF8Encoding();
clearTextAsByte = encoding.GetBytes(clearText);
// Create an instance of our encryption algorithm.
RijndaelManaged rijndeal = new RijndaelManaged();
// Create an encryptor using our key and iv.
ICryptoTransform transform = rijndeal.CreateEncryptor(key, iv);
// Create the streams for input and output.
MemoryStream outputStream = new MemoryStream();
CryptoStream inputStream = new CryptoStream(
outputStream, transform, CryptoStreamMode.Write);
// Feed our data into the crypto stream.
inputStream.Write(clearTextAsByte, 0, clearTextAsByte.Length);
// Flush the crypto stream.
inputStream.FlushFinalBlock();
string output = Convert.ToBase64String(outputStream.ToArray());
// And finally return out encrypted data.
return output;
}
public string Decrypt(string clearText, byte[] key, byte[] iv)
{
UTF8Encoding encoding = new UTF8Encoding();
byte[] encode = new byte[clearText.Length];
encode = encoding.GetBytes(clearText);
// Create an instance of our encryption algorithm.
RijndaelManaged rijndeal = new RijndaelManaged();
// rijndeal.Padding = PaddingMode.None;
// Create an encryptor using our key and iv.
ICryptoTransform transform = rijndeal.CreateDecryptor(key, iv);
// Create the streams for input and output.
MemoryStream outputStream = new MemoryStream();
CryptoStream inputStream = new CryptoStream(
outputStream, transform, CryptoStreamMode.Write);
// Feed our data into the crypto stream.
inputStream.Write(encode, 0, encode.Length);
// Flush the crypto stream.
inputStream.FlushFinalBlock();
byte[] MyOutputStream = outputStream.ToArray();
String MyOutputStreamer = Encoding.UTF8.GetString(MyOutputStream);
byte[] MyOutput = Convert.FromBase64String(MyOutputStreamer);
// And finally return out encrypted data.
return MyOutputStreamer;
}
}
Där VS fastnar med felmeddelandet i funktionen : inputStream.FlushFinalBlock(); i Dekrypt-processen.
Jag har sparat IV-nyckeln, slumpmässigt genererad, i kolumn tillsammans med den krypterade texten. Själv krypteringsnyckeln har jag sparat i separat databas. Allt sparas precis som det ska.
Är det någon som ser någon påtaglig anledning till detta fel plötsligt så fort jag försöker med krypetring och dekryptering mot databas i SQL-server??
Allt blir krypterat i databasen