(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

SymmetricAlgorithm-Klasse

Stellt die abstrakte Basisklasse dar, von der alle Implementierungen von symmetrischen Algorithmen erben müssen.

Namespace:  System.Security.Cryptography
Assembly:  mscorlib (in mscorlib.dll)

[ComVisibleAttribute(true)]
public abstract class SymmetricAlgorithm : IDisposable

Der SymmetricAlgorithm-Typ macht die folgenden Member verfügbar.

  NameBeschreibung
Geschützte MethodeSymmetricAlgorithmInitialisiert eine neue Instanz der SymmetricAlgorithm-Klasse.
Zum Seitenanfang

  NameBeschreibung
Öffentliche EigenschaftBlockSizeRuft die Blockgröße des kryptografischen Vorgangs in Bits ab oder legt diese fest.
Öffentliche EigenschaftFeedbackSizeRuft die Feedbackgröße des kryptografischen Vorgangs in Bits ab oder legt diese fest.
Öffentliche EigenschaftIVRuft den Initialisierungsvektor (IV) für den symmetrischen Algorithmus ab oder legt diesen fest.
Öffentliche EigenschaftKeyRuft den geheimen Schlüssel für den symmetrischen Algorithmus ab oder legt diesen fest.
Öffentliche EigenschaftKeySizeRuft die Größe des geheimen Schlüssels für den symmetrischen Algorithmus in Bits ab oder legt diese fest.
Öffentliche EigenschaftLegalBlockSizesRuft die vom symmetrischen Algorithmus unterstützten Blockgrößen in Bits ab.
Öffentliche EigenschaftLegalKeySizesRuft die vom symmetrischen Algorithmus unterstützten Schlüsselgrößen in Bits ab.
Öffentliche EigenschaftModeRuft den Modus für die Ausführung des symmetrischen Algorithmus ab oder legt diesen fest.
Öffentliche EigenschaftPaddingRuft den im symmetrischen Algorithmus verwendeten Füllzeichenmodus ab oder legt diesen fest.
Zum Seitenanfang

  NameBeschreibung
Öffentliche MethodeClearGibt alle von der SymmetricAlgorithm-Klasse verwendeten Ressourcen frei.
Öffentliche MethodeStatischer MemberCreate()Erstellt ein Standardkryptografieobjekt zum Ausführen des symmetrischen Algorithmus.
Öffentliche MethodeStatischer MemberCreate(String)Erstellt das angegebene Kryptografieobjekt zum Ausführen des symmetrischen Algorithmus.
Öffentliche MethodeCreateDecryptor()Erstellt ein symmetrisches Entschlüsselungsobjekt mit der aktuellen Key-Eigenschaft und dem Initialisierungsvektor (IV).
Öffentliche MethodeCreateDecryptor(Byte[], Byte[])Erstellt beim Überschreiben in einer abgeleiteten Klasse ein symmetrisches Entschlüsselungsobjekt mit der angegebenen Key-Eigenschaft und dem angegebenen Initialisierungsvektor (IV).
Öffentliche MethodeCreateEncryptor()Erstellt ein symmetrisches Verschlüsselungsobjekt mit der aktuellen Key-Eigenschaft und dem aktuellen Initialisierungsvektor (IV).
Öffentliche MethodeCreateEncryptor(Byte[], Byte[])Erstellt beim Überschreiben in einer abgeleiteten Klasse ein symmetrisches Verschlüsselungsobjekt mit der angegebenen Key-Eigenschaft und dem angegebenen Initialisierungsvektor (IV).
Öffentliche MethodeDispose()Gibt alle von der aktuellen Instanz der SymmetricAlgorithm-Klasse verwendeten Ressourcen frei.
Geschützte MethodeDispose(Boolean)Gibt die vom SymmetricAlgorithm verwendeten nicht verwalteten Ressourcen und optional auch die verwalteten Ressourcen frei.
Öffentliche MethodeEquals(Object)Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist. (Von Object geerbt.)
Geschützte MethodeFinalize Gibt einem Objekt Gelegenheit, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Von Object geerbt.)
Öffentliche MethodeGenerateIVGeneriert beim Überschreiben in einer abgeleiteten Klasse einen zufälligen Initialisierungsvektor (IV) für den Algorithmus.
Öffentliche MethodeGenerateKeyGeneriert beim Überschreiben in einer abgeleiteten Klasse einen zufälligen Schlüssel (Key) für den Algorithmus.
Öffentliche MethodeGetHashCodeFungiert als die Standardhashfunktion. (Von Object geerbt.)
Öffentliche MethodeGetTypeRuft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Geschützte MethodeMemberwiseCloneErstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Öffentliche MethodeToStringGibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.)
Öffentliche MethodeValidKeySizeBestimmt, ob die angegebene Schlüsselgröße für den aktuellen Algorithmus gültig ist.
Zum Seitenanfang

  NameBeschreibung
Geschütztes FeldBlockSizeValueStellt die Blockgröße des kryptografischen Vorgangs in Bits dar.
Geschütztes FeldFeedbackSizeValueStellt die Feedbackgröße des kryptografischen Vorgangs in Bits dar.
Geschütztes FeldIVValueStellt den Initialisierungsvektor (IV) für den symmetrischen Algorithmus dar.
Geschütztes FeldKeySizeValueStellt die Größe des vom symmetrischen Algorithmus verwendeten geheimen Schlüssels in Bits dar.
Geschütztes FeldKeyValueStellt den geheimen Schlüssel für den symmetrischen Algorithmus dar.
Geschütztes FeldLegalBlockSizesValueGibt die vom symmetrischen Algorithmus unterstützten Blockgrößen in Bits an.
Geschütztes FeldLegalKeySizesValueGibt die vom symmetrischen Algorithmus unterstützten Schlüsselgrößen in Bits an.
Geschütztes FeldModeValueStellt den im symmetrischen Algorithmus verwendeten Verschlüsselungsmodus dar.
Geschütztes FeldPaddingValueStellt den im symmetrischen Algorithmus verwendeten Füllzeichenmodus dar.
Zum Seitenanfang

Die Klassen, die von der SymmetricAlgorithm-Klasse abgeleitet werden, verwenden den CBC-Verkettungsmodus (Cipher Block Chaining), der für die kryptografische Datentransformation einen Schlüssel (Key) und einen Initialisierungsvektor (IV) erfordert. Um Daten zu entschlüsseln, die mit einer der SymmetricAlgorithm-Klassen verschlüsselt wurden, müssen Sie die Key-Eigenschaft und die IV-Eigenschaft auf dieselben Werte festlegen, die für die Verschlüsselung verwendet wurden. Wenn ein symmetrischer Algorithmus sinnvoll verwendet werden soll, dürfen nur der Absender und der Empfänger den geheimen Schlüssel kennen.

Bei RijndaelManaged, DESCryptoServiceProvider, RC2CryptoServiceProvider und TripleDESCryptoServiceProvider handelt es sich um Implementierungen symmetrischer Algorithmen.

Beachten Sie, dass es bei der Verwendung abgeleiteter Klassen vom Standpunkt der Datensicherheit nicht ausreichend ist, einfach eine Garbage Collection zu erzwingen, nachdem Sie das Objekt verwendet haben. Sie müssen die Clear-Methode für das Objekt explizit aufrufen, um alle sensiblen Daten innerhalb des Objekts vor der Freigabe mit 0 (null) zu füllen. Beachten Sie, dass bei der Garbage Collection nicht der Inhalt der aufgelisteten Objekte mit 0 (null) gefüllt, sondern nur der Speicher so kennzeichnet wird, dass er zur erneuten Belegung zur Verfügung steht. Daher sind die Daten in einem Objekt, das an den Garbage Collector übergeben wurde, möglicherweise noch im Heap im nicht belegten Speicher vorhanden. Bei Kryptografieobjekten können diese Daten sensible Informationen enthalten, z. B. Schlüsseldaten oder einen Klartextblock.

Alle kryptografischen Klassen in .NET Framework, die vertrauliche Daten enthalten, implementieren eine Clear-Methode. Bei einem Aufruf überschreibt die Clear-Methode alle vertraulichen Daten innerhalb des Objekts mit 0 (null) und gibt das Objekt anschließend frei, sodass es der Garbage Collection sicher unterzogen werden kann. Nachdem das Objekt mit 0 (null) aufgefüllt und freigegeben wurde, müssen Sie die Dispose-Methode mit dem auf True festgelegten disposing-Parameter aufrufen, um alle dem Objekt zugeordneten verwalteten und nicht verwalteten Ressourcen freizugeben.

Hinweise zur Vererbung

Wenn Sie von der SymmetricAlgorithm-Klasse erben, müssen Sie die folgenden Member überschreiben: CreateDecryptor, CreateEncryptor, GenerateIV und GenerateKey.

Im folgenden Codebeispiel wird die RijndaelManaged-Klasse mit der angegebenen Key -Eigenschaft und dem Initialisierungsvektor (IV) verwendet, um eine durch inName angegebene Datei zu verschlüsseln, und das verschlüsselte Ergebnis wird an die durch outName angegebene Datei ausgegeben. Der desKey-Parameter und der desIV-Parameter der Methode sind 8-Byte-Arrays. Um dieses Beispiel auszuführen, müssen Sie das 128-Bit-Verschlüsselungspaket installiert haben.


private static void EncryptData(String inName, String outName, byte[] rijnKey, byte[] rijnIV)
 {    
     //Create the file streams to handle the input and output files.
     FileStream fin = new FileStream(inName, FileMode.Open, FileAccess.Read);
     FileStream fout = new FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);
     fout.SetLength(0);

     //Create variables to help with read and write.
     byte[] bin = new byte[100]; //This is intermediate storage for the encryption.
     long rdlen = 0;              //This is the total number of bytes written.
     long totlen = fin.Length;    //This is the total length of the input file.
     int len;                     //This is the number of bytes to be written at a time.

     SymmetricAlgorithm rijn = SymmetricAlgorithm.Create(); //Creates the default implementation, which is RijndaelManaged.         
     CryptoStream encStream = new CryptoStream(fout, rijn.CreateEncryptor(rijnKey, rijnIV), CryptoStreamMode.Write);

     Console.WriteLine("Encrypting...");

     //Read from the input file, then encrypt and write to the output file.
     while(rdlen < totlen)
     {
         len = fin.Read(bin, 0, 100);
         encStream.Write(bin, 0, len);
         rdlen = rdlen + len;
         Console.WriteLine("{0} bytes processed", rdlen);
     }

     encStream.Close();  
     fout.Close();
     fin.Close();                   
 }


.NET Framework

Unterstützt in: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

Es werden nicht alle Versionen sämtlicher Plattformen von .NET Framework unterstützt.. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Alle öffentlichen static (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Community-Beiträge

HINZUFÜGEN
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2014 Microsoft