Heim >Backend-Entwicklung >C#.Net-Tutorial >Asp.net, C#-Verschlüsselungs- und Entschlüsselungszeichenfolge

Asp.net, C#-Verschlüsselungs- und Entschlüsselungszeichenfolge

巴扎黑
巴扎黑Original
2016-12-20 16:01:411541Durchsuche

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; ///

          /// < ;/summary> 🎜>             public CryptoHelper()                                                                                                            Einstellungen["Schlüssel"];
                                                      }





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:
///                                                                                                                ;returns>
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:
/// Zusammenfassung>
/// 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()); 
        } 
    } 

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn