Heim >Backend-Entwicklung >C#.Net-Tutorial >Asp.net, C#-Verschlüsselungs- und Entschlüsselungszeichenfolge
Fügen Sie zunächst den folgenden Code unter der Datei web.config | hinzu:
>
IV: Anfangsvektor des Verschlüsselungsalgorithmus.
Schlüssel: Der Schlüssel des Verschlüsselungsalgorithmus.
Erstellen Sie dann eine neue Klasse CryptoHelper als Verschlüsselungs-Hilfsklasse.
Besorgen Sie sich zunächst den IV und den Schlüssel aus der Konfigurationsdatei. Der Grundcode lautet also wie folgt:
public class CryptoHelper
{
//private readonly string IV = "SuFjcEmp/TE="
private readonly string IV = string.Empty; //private readonly string Key = "KIPSToILGp6fl+3gXJvMsN4IajizYBBT";
private readonly string Key = string.Empty; ///
}
Achten Sie darauf, die Assembly-Referenz System.Configuration.dll hinzuzufügen.
Nachdem Sie den IV und den Schlüssel erhalten haben, müssen Sie die Serviceklasse erhalten, die Verschlüsselungsdienste bereitstellt.
Hier wird die TripleDESCryptoServiceProvider-Klasse unter dem System.Security.Cryptography-Namespace verwendet.
Die Methode zum Erhalten von TripleDESCryptoServiceProvider ist wie folgt:
///
private TripleDESCryptoServiceProvider GetCryptoProvider()
{
TripleDESCryptoServiceProvider = new TripleDESCryptoServiceProvider(); 🎜>Provider.IV = Convert.FromBase64String(IV);
CreateDecryptor: Erstellen Sie ein symmetrisches Entschlüsselungsobjekt ICryptoTransform
Verschlüsselungsobjekte und Entschlüsselungsobjekte können von CryptoStream-Objekten verwendet werden. um Streams zu verschlüsseln und zu entschlüsseln.
Der Konstruktor von cryptoStream lautet wie folgt:
public CryptoStream(Stream stream, ICryptoTransform transform, CryptoStreamMode mode);
Verwenden Sie das Transformationsobjekt, um den Stream zu konvertieren.
Der vollständige verschlüsselte String-Code lautet wie folgt:
///
/// Eingabewert.public string GetEncryptedValue(string inputValue)
{ MemoryStream mStream = new MemoryStream() ;
// Einen verschlüsselten Konvertierungsstream erstellen
CryptoStream cStream = new CryptoStream(mStream,
Provider.CreateEncryptor( ), CryptoStreamMode.Write);
// UTF8-Kodierung verwenden, um die Bytes der Eingabezeichenfolge zu erhalten.
byte[] toEncrypt = new UTF8Encoding().GetBytes(inputValue);
// Bytes in den Konvertierungsstream schreiben.
cStream.Write(toEncrypt, 0, toEncrypt.Length);
cStream.FlushFinalBlock();
// Nach dem Aufruf der FlushFinalBlock-Methode des Konvertierungsstreams wird die Konvertierung intern durchgeführt. Zu diesem Zeitpunkt ist mStream der verschlüsselte Stream.
byte[] ret = mStream.ToArray();
// Schließen Sie die Streams.
mStream.Close(); //Kodieren Sie die verschlüsselten Bytes in 64-Bit-Kodierung.
return Convert.ToBase64String(ret); > ///
public string GetDecryptedValue(string inputValue)
{
TripleDESCrypto Dienstanbieter anbieter = this.GetCryptoProvider();
byte[] inputEquivalent = Convert.FromBase64String(inputValue);
CryptoStream csDecrypt = new CryptoStream(msDecrypt,
provider.CreateDecryptor(),
CryptoStreamMode.Write);
csDecrypt.Write(inputEquivalent, 0, inputEquivalent.Length);
csDecrypt.FlushFinalBlock(); //获取字符串。
return new UTF8Encoding().GetString(msDecrypt.ToArray());
}
完整的CryptoHelper代码如下:
using System;
mit System.Collections.Generic;
mit System.Linq;
mit System.Text;
mit System.Security.Cryptography;
mit System.IO;
mit System.Configuration;
Namespace WindowsFormsApplication1
{
öffentliche Klasse CryptoHelper
{
//private readonly string IV = "SuFjcEmp/TE=";
private readonly string IV = string.Empty;
//private readonly string Key = "KIPSToILGp6fl+3gXJvMsN4IajizYBBT";
private readonly string Key = string.Empty;
public CryptoHelper()
{
IV = ConfigurationManager.AppSettings["IV"];
Key = ConfigurationManager.AppSettings["Key"];
}
///
/// 获取加密后的字符串
///
/// 输入值.
///
öffentliche Zeichenfolge GetEncryptedValue(string inputValue)
{
TripleDESCryptoServiceProviderProvider = this.GetCryptoProvider();
// 创建内存流来保存加密后的流
MemoryStream mStream = new MemoryStream();
// 创建加密转换流
CryptoStream cStream = new CryptoStream(mStream,
procedure
// 使用UTF8编码获取输入字符串的字节.
// 将字节写到转换流里面去。
cStream.Write(toEncrypt, 0, toEncrypt.Length);
cStream.FlushFinalBlock(); 🎜> byte[] ret = mStream.ToArray();
// Schließe die Streams.
cStream.Close();
mStream.Close();
//将加密后的字节进行64编码。
return Convert.ToBase64String(ret);
}
///
/// 获取加密服务类
///
///
private TripleDESCryptoServiceProvider GetCryptoProvider()
{
TripleDESCryptoServiceProviderProvider = new TripleDESCryptoServiceProvider();
provider.IV = Convert.FromBase64String(IV);
Provider.Key = Convert.FromBase64String(Key);
Rücksendeanbieter;
}
///
/// 获取解密后的值
///
/// 经过加密后的字符串.
///
öffentliche Zeichenfolge GetDecryptedValue(string inputValue)
{
TripleDESCryptoServiceProviderProvider = this.GetCryptoProvider();
byte[] inputEquivalent = Convert.FromBase64String(inputValue);
// 创建内存流保存解密后的数据
MemoryStream msDecrypt = new MemoryStream();
// 创建转换流.
Mode.Write);
csDecrypt.Write(inputEquivalent, 0, inputEquivalent.Length);
csDecrypt.FlushFinalBlock();
csDecrypt.Close();
//获取字符串。
return new UTF8Encoding().GetString(msDecrypt.ToArray());
}
}
}