afficher la copie ordinaire dans le presse-papiers ?
//espace de noms
utiliser le système ;
en utilisant System.Security.Cryptography ;
en utilisant System.IO ;
en utilisant System.Text ;
//méthode
//méthode de chiffrement
chaîne publique Encrypt (chaîne pToEncrypt, chaîne sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
//Mette la chaîne dans le tableau d'octets
//J'ai modifié l'encodage UTF8 initialement utilisé par l'encodage Unicode, mais cela ne fonctionne pas.
byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
//byte[] inputByteArray=Encoding.Unicode.GetBytes(pToEncrypt);
//Établit la clé et le décalage de l'objet chiffré
//Le texte original utilise la méthode GetBytes de la méthode ASCIIEncoding.ASCII.
// Rendre nécessaire la saisie du texte anglais lors de la saisie du mot de passe
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = nouveau MemoryStream();
CryptoStream cs = nouveau CryptoStream(ms, des.CreateEncryptor(),CryptoStreamMode.Write);
//Écrit le tableau d'octets dans le flux cryptographique
//(Il finira dans le flux mémoire)
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
//Récupère les données du flux mémoire et dans une chaîne
StringBuilder ret = new StringBuilder();
foreach (octet b dans ms.ToArray())
{
//Formater en hexadécimal
ret.AppendFormat("{0:X2}", b);
}
ret.ToString();
return ret.ToString();
}
//méthode de décryptage
chaîne publique Décrypter (chaîne pToDecrypt, chaîne sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
//Mette la chaîne d'entrée dans le tableau d'octets
octet[] inputByteArray = nouvel octet[pToDecrypt.Length / 2];
pour(int x = 0; x < pToDecrypt.Length / 2; x++)
{
int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
inputByteArray[x] = (octet)i;
}
//Établit la clé et le décalage de l'objet chiffré. Cette valeur est importante et ne peut pas être modifiée.
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = nouveau MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(),CryptoStreamMode.Write);
// Vider les données via le flux cryptographique dans le flux mémoire
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
//Récupère les données décryptées du flux mémoire
//Créez un objet StringBuild. CreateDecrypt utilise un objet stream et le texte déchiffré doit être transformé en objet stream.
StringBuilder ret = new StringBuilder();
return System.Text.Encoding.Default.GetString(ms.ToArray());
}
//-------Code terminé--------------------
//Espace de nom
utiliser le système ;
en utilisant System.Security.Cryptography ;
en utilisant System.IO ;
en utilisant System.Text ;
//méthode
//méthode de chiffrement
chaîne publique Encrypt (chaîne pToEncrypt, chaîne sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
//Mette la chaîne dans le tableau d'octets
//J'ai modifié l'encodage UTF8 initialement utilisé par l'encodage Unicode, mais cela ne fonctionne pas.
byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
//byte[] inputByteArray=Encoding.Unicode.GetBytes(pToEncrypt);
//Établit la clé et le décalage de l'objet chiffré
//Le texte original utilise la méthode GetBytes de la méthode ASCIIEncoding.ASCII.
// Rendre nécessaire la saisie du texte anglais lors de la saisie du mot de passe
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = nouveau MemoryStream();
CryptoStream cs = nouveau CryptoStream(ms, des.CreateEncryptor(),CryptoStreamMode.Write);
//Écrit le tableau d'octets dans le flux cryptographique
//(Il finira dans le flux mémoire)
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
//Récupère les données du flux mémoire et dans une chaîne
StringBuilder ret = new StringBuilder();
foreach (octet b dans ms.ToArray())
{
//Formater en hexadécimal
ret.AppendFormat("{0:X2}", b);
}
ret.ToString();
return ret.ToString();
}
//méthode de décryptage
chaîne publique Décrypter (chaîne pToDecrypt, chaîne sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
//Mette la chaîne d'entrée dans le tableau d'octets
octet[] inputByteArray = nouvel octet[pToDecrypt.Length / 2];
pour(int x = 0; x < pToDecrypt.Length / 2; x++)
{
int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
inputByteArray[x] = (octet)i;
}
//Établit la clé et le décalage de l'objet chiffré. Cette valeur est importante et ne peut pas être modifiée.
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = nouveau MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(),CryptoStreamMode.Write);
// Vider les données via le flux cryptographique dans le flux mémoire
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
//Récupère les données décryptées du flux mémoire
//Créez un objet StringBuild. CreateDecrypt utilise un objet stream et le texte déchiffré doit être transformé en objet stream.
StringBuilder ret = new StringBuilder();
return System.Text.Encoding.Default.GetString(ms.ToArray());
}
//------Code terminé--------------------
Remarque : lors de la saisie du mot de passe dans sKey, vous devez utiliser des caractères anglais, sensibles à la casse, et le nombre de caractères est de 8, ni plus ni moins, sinon une erreur se produira.
J'utilise Windows2000 Server .Net Framework SP3, et il est utilisé avec succès sous asp.net sous VS.Net, et le cryptage et le décryptage sont normaux !