CRIPTOGRAFIA

F001E 06/05/2014 16:09:47
#437914
Boa tarde a Todos...
Tenho esses dois códigos Encrypt e Decrypt.
Esta criptografando certo e desencriptografando também, mas é em algumas string que dá certo.
Por exemplo a palavra [Ô]dipilEquE[Ô] criptografou sem erro mas quando vai desencriptografar ocorre o seguinte erro [Ô]length of the data to decrypt is invalid.[Ô]
Como resolver isso ?

Segue os Códigos..

private static byte[] bIV = { 0x50, 0x08, 0xF1, 0xDD, 0xDE, 0x3C, 0xF2, 0x18, 0x44, 0x74, 0x19, 0x2C, 0x53, 0x49, 0xAB, 0xBC };
private const string cryptoKey = [Ô]Q3JpcHRvZ3JhZmlhcyBjb20gUmluamRhZWwgLyBBRVM=[Ô];

public static string Encrypt(string text)
{
try
{
if (!string.IsNullOrEmpty(text))
{

byte[] bKey = Convert.FromBase64String(cryptoKey);
byte[] bText = new UTF8Encoding().GetBytes(text);

Rijndael rijndael = new RijndaelManaged();
rijndael.KeySize = 256;
MemoryStream mStream = new MemoryStream();

CryptoStream encryptor = new CryptoStream(mStream, rijndael.CreateEncryptor(bKey, bIV), CryptoStreamMode.Write);

encryptor.Write(bText, 0, bText.Length);
encryptor.FlushFinalBlock();
return Convert.ToBase64String(mStream.ToArray());
}
else
{
return null;
}
}
catch (Exception ex)
{
throw new ApplicationException([Ô]Erro ao criptografar[Ô], ex);
}
}

public static string Decrypt(string text)
{
try
{
if (!string.IsNullOrEmpty(text))
{
byte[] bKey = Convert.FromBase64String(cryptoKey);
byte[] bText = Convert.FromBase64String(text);

Rijndael rijndael = new RijndaelManaged();
rijndael.KeySize = 256;

MemoryStream mStream = new MemoryStream();
CryptoStream decryptor = new CryptoStream(mStream, rijndael.CreateDecryptor(bKey, bIV), CryptoStreamMode.Write);

decryptor.Write(bText, 0, bText.Length);
decryptor.FlushFinalBlock();

UTF8Encoding utf8 = new UTF8Encoding();
return utf8.GetString(mStream.ToArray());
}
else
{
return null;
}
}
catch (Exception ex)
{
throw new ApplicationException(ex.Message, ex);
}
}
FILMAN 06/05/2014 22:37:24
#437929
Resposta escolhida
Use esses métodos abaixo que vai ter ajudar! Cole na sua classe de criptografia.

Classes a serem importadas caso não tenha
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.IO;


        private static byte[] chave = new byte[] { };
private static byte[] iv = new byte[8] { 12, 34, 56, 78, 90, 102, 114, 126 };
private static string chaveCriptografia = [Ô]#!$a36?@[Ô];

public static string Criptografar(string valor)//, string chaveCriptografia)
{
DESCryptoServiceProvider des;
MemoryStream ms;
CryptoStream cs;
byte[] input;

try
{
des = new DESCryptoServiceProvider();
ms = new MemoryStream();
input = Encoding.UTF8.GetBytes(valor);
chave = Encoding.UTF8.GetBytes(chaveCriptografia.Substring(0, 8));

cs = new CryptoStream(ms, des.CreateEncryptor(chave, iv), CryptoStreamMode.Write);
cs.Write(input, 0, input.Length);
cs.FlushFinalBlock();

return Convert.ToBase64String(ms.ToArray());
}
catch (Exception ex)
{
throw ex;
}
}

public static string DesCriptografar(string valor)//, string chaveCriptografia)
{
DESCryptoServiceProvider des;
MemoryStream ms;
CryptoStream cs;
byte[] input;

try
{
des = new DESCryptoServiceProvider();
ms = new MemoryStream();

input = new byte[valor.Length];
input = Convert.FromBase64String(valor.Replace([Ô] [Ô], [Ô]+[Ô]));

chave = Encoding.UTF8.GetBytes(chaveCriptografia.Substring(0, 8));

cs = new CryptoStream(ms, des.CreateDecryptor(chave, iv), CryptoStreamMode.Write);
cs.Write(input, 0, input.Length);
cs.FlushFinalBlock();

return Encoding.UTF8.GetString(ms.ToArray());
}
catch (Exception ex)
{
throw ex;
}
}



F001E 06/05/2014 23:02:13
#437931
certo FILMAN, funcionou....
Tópico encerrado , respostas não são mais permitidas