visualizar cópia simples para impressão da área de transferência?
//espaço para nome
usando o sistema;
usando System.Security.Cryptography;
usando System.IO;
usando System.Text;
//método
//método de criptografia
criptografia de string pública (string pToEncrypt, string sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
//Coloca a string no array de bytes
//Alterei a codificação UTF8 originalmente usada para codificação Unicode, mas não funciona.
byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
//byte[] inputByteArray=Encoding.Unicode.GetBytes(pToEncrypt);
//Estabelece a chave e o deslocamento do objeto criptografado
//O texto original utiliza o método GetBytes do método ASCIIEncoding.ASCII.
// Torna necessário inserir texto em inglês ao inserir a senha
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = novo CryptoStream(ms, des.CreateEncryptor(),CryptoStreamMode.Write);
//Escreve a matriz de bytes no fluxo criptográfico
//(Isso terminará no fluxo de memória)
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
//Recupera os dados do fluxo de memória e os coloca em uma string
StringBuilder ret = new StringBuilder();
foreach(byte b em ms.ToArray())
{
//Formatar como hexadecimal
ret.AppendFormat("{0:X2}", b);
}
ret.ToString();
retornar ret.ToString();
}
//método de descriptografia
string pública Decrypt(string pToDecrypt, string sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
//Coloca a string de entrada no array de bytes
byte[] inputByteArray = novo byte[pToDecrypt.Length / 2];
for(int x = 0; x < pToDecrypt.Length / 2; x++)
{
int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
inputByteArray[x] = (byte)i;
}
//Estabelece a chave e o deslocamento do objeto criptografado. Este valor é importante e não pode ser modificado.
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = novo CryptoStream(ms, des.CreateDecryptor(),CryptoStreamMode.Write);
//Libera os dados através do fluxo criptográfico para o fluxo de memória
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
//Recupera os dados descriptografados do fluxo de memória
//Crie um objeto StringBuild CreateDecrypt usa um objeto de fluxo e o texto descriptografado deve ser transformado em um objeto de fluxo.
StringBuilder ret = new StringBuilder();
retornar System.Text.Encoding.Default.GetString(ms.ToArray());
}
//-------Código concluído--------------------
//Espaço de nome
usando o sistema;
usando System.Security.Cryptography;
usando System.IO;
usando System.Text;
//método
//método de criptografia
criptografia de string pública (string pToEncrypt, string sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
//Coloca a string no array de bytes
//Alterei a codificação UTF8 originalmente usada para codificação Unicode, mas não funciona.
byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
//byte[] inputByteArray=Encoding.Unicode.GetBytes(pToEncrypt);
//Estabelece a chave e o deslocamento do objeto criptografado
//O texto original usa o método GetBytes do método ASCIIEncoding.ASCII.
// Torna necessário inserir texto em inglês ao inserir a senha
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = novo CryptoStream(ms, des.CreateEncryptor(),CryptoStreamMode.Write);
//Escreve a matriz de bytes no fluxo criptográfico
//(Isso terminará no fluxo de memória)
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
//Recupera os dados do fluxo de memória e os coloca em uma string
StringBuilder ret = new StringBuilder();
foreach(byte b em ms.ToArray())
{
//Formatar como hexadecimal
ret.AppendFormat("{0:X2}", b);
}
ret.ToString();
retornar ret.ToString();
}
//método de descriptografia
string pública Decrypt(string pToDecrypt, string sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
//Coloca a string de entrada no array de bytes
byte[] inputByteArray = novo byte[pToDecrypt.Length / 2];
for(int x = 0; x < pToDecrypt.Length / 2; x++)
{
int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
inputByteArray[x] = (byte)i;
}
//Estabelece a chave e o deslocamento do objeto criptografado. Este valor é importante e não pode ser modificado.
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = novo CryptoStream(ms, des.CreateDecryptor(),CryptoStreamMode.Write);
//Libera os dados através do fluxo criptográfico para o fluxo de memória
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
//Recupera os dados descriptografados do fluxo de memória
//Crie um objeto StringBuild CreateDecrypt usa um objeto de fluxo e o texto descriptografado deve ser transformado em um objeto de fluxo.
StringBuilder ret = new StringBuilder();
retornar System.Text.Encoding.Default.GetString(ms.ToArray());
}
//------Código concluído---------
Nota: Ao inserir a senha no sKey, você deve usar caracteres do inglês, que diferenciam maiúsculas de minúsculas, e o número de caracteres é 8, nem mais nem menos, caso contrário ocorrerá um erro.
Eu uso o Windows2000 Server .Net Framework SP3 e ele é usado com sucesso no asp.net no VS.Net, e a criptografia e a descriptografia são normais!