CRIPTOGRAFIA
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);
}
}
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);
}
}
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;
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;
}
}
certo FILMAN, funcionou....
Tópico encerrado , respostas não são mais permitidas