Klartext in Zwischenablage anzeigen und drucken?
//Namespace
Verwenden des Systems;
Verwendung von System.Security.Cryptography;
mit System.IO;
Verwenden von System.Text;
//Verfahren
//Verschlüsselungsmethode
öffentliche Zeichenfolge Encrypt(Zeichenfolge pToEncrypt, Zeichenfolge sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
//Füge die Zeichenfolge in das Byte-Array ein
//Ich habe die ursprünglich verwendete UTF8-Kodierung in die Unicode-Kodierung geändert, aber es funktioniert nicht.
byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
//byte[] inputByteArray=Encoding.Unicode.GetBytes(pToEncrypt);
//Legen Sie den Schlüssel und den Offset des verschlüsselten Objekts fest
//Der Originaltext verwendet die GetBytes-Methode der ASCIIEncoding.ASCII-Methode.
// Machen Sie es erforderlich, dass bei der Passworteingabe englischer Text eingegeben wird
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(),CryptoStreamMode.Write);
//Schreibe das Byte-Array in den Krypto-Stream
//(Es wird im Speicherstrom landen)
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
//Holen Sie sich die Daten aus dem Speicherstream zurück und in einen String
StringBuilder ret = new StringBuilder();
foreach(byte b in ms.ToArray())
{
//Als Hex formatieren
ret.AppendFormat("{0:X2}", b);
}
ret.ToString();
return ret.ToString();
}
//Entschlüsselungsmethode
öffentliche Zeichenfolge Decrypt(Zeichenfolge pToDecrypt, Zeichenfolge sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
//Füge die Eingabezeichenfolge in das Byte-Array ein
byte[] inputByteArray = neues 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;
}
//Legen Sie den Schlüssel und den Offset des verschlüsselten Objekts fest. Dieser Wert ist wichtig und kann nicht geändert werden.
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(),CryptoStreamMode.Write);
//Löschen Sie die Daten über den Krypto-Stream in den Speicher-Stream
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
//Die entschlüsselten Daten aus dem Speicherstream zurückholen
//Erstelle ein StringBuild-Objekt. CreateDecrypt verwendet ein Stream-Objekt und der entschlüsselte Text muss in ein Stream-Objekt umgewandelt werden.
StringBuilder ret = new StringBuilder();
return System.Text.Encoding.Default.GetString(ms.ToArray());
}
//-------Code abgeschlossen------
//Namensraum
Verwenden des Systems;
Verwendung von System.Security.Cryptography;
mit System.IO;
Verwenden von System.Text;
//Verfahren
//Verschlüsselungsmethode
öffentliche Zeichenfolge Encrypt(Zeichenfolge pToEncrypt, Zeichenfolge sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
//Füge die Zeichenfolge in das Byte-Array ein
//Ich habe die ursprünglich verwendete UTF8-Kodierung in die Unicode-Kodierung geändert, aber es funktioniert nicht.
byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
//byte[] inputByteArray=Encoding.Unicode.GetBytes(pToEncrypt);
//Legen Sie den Schlüssel und den Offset des verschlüsselten Objekts fest
//Der Originaltext verwendet die GetBytes-Methode der ASCIIEncoding.ASCII-Methode.
// Machen Sie es erforderlich, dass bei der Passworteingabe englischer Text eingegeben wird
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(),CryptoStreamMode.Write);
//Schreibe das Byte-Array in den Krypto-Stream
//(Es wird im Speicherstrom landen)
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
//Holen Sie sich die Daten aus dem Speicherstream zurück und in einen String
StringBuilder ret = new StringBuilder();
foreach(byte b in ms.ToArray())
{
//Als Hex formatieren
ret.AppendFormat("{0:X2}", b);
}
ret.ToString();
return ret.ToString();
}
//Entschlüsselungsmethode
öffentliche Zeichenfolge Decrypt(Zeichenfolge pToDecrypt, Zeichenfolge sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
//Füge die Eingabezeichenfolge in das Byte-Array ein
byte[] inputByteArray = neues 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;
}
//Legen Sie den Schlüssel und den Offset des verschlüsselten Objekts fest. Dieser Wert ist wichtig und kann nicht geändert werden.
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(),CryptoStreamMode.Write);
//Löschen Sie die Daten über den Krypto-Stream in den Speicher-Stream
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
//Die entschlüsselten Daten aus dem Speicherstream zurückholen
//Erstelle ein StringBuild-Objekt. CreateDecrypt verwendet ein Stream-Objekt und der entschlüsselte Text muss in ein Stream-Objekt umgewandelt werden.
StringBuilder ret = new StringBuilder();
return System.Text.Encoding.Default.GetString(ms.ToArray());
}
//------Code abgeschlossen------
Hinweis: Bei der Eingabe des Passworts in sKey müssen Sie englische Zeichen verwenden, bei denen die Groß-/Kleinschreibung beachtet wird, und die Anzahl der Zeichen beträgt 8, nicht mehr oder weniger, sonst tritt ein Fehler auf.
Ich verwende Windows2000 Server .Net Framework SP3 und es wird erfolgreich unter asp.net unter VS.Net verwendet, und die Ver- und Entschlüsselung ist normal!