SymmetricAlgorithm Osztály

Definíció

Azt az absztrakt alaposztályt jelöli, amelytől a szimmetrikus algoritmusok összes implementációjának örökölnie kell.

public ref class SymmetricAlgorithm abstract : IDisposable
public abstract class SymmetricAlgorithm : IDisposable
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class SymmetricAlgorithm : IDisposable
type SymmetricAlgorithm = class
    interface IDisposable
[<System.Runtime.InteropServices.ComVisible(true)>]
type SymmetricAlgorithm = class
    interface IDisposable
Public MustInherit Class SymmetricAlgorithm
Implements IDisposable
Öröklődés
SymmetricAlgorithm
Származtatott
Attribútumok
Megvalósítás

Példák

Az alábbi példakód a Aes megadott tulajdonsággal és inicializálási vektorral (Key) rendelkező osztályt használja a megadott IVinNamefájl titkosításához, és a titkosított eredményt a megadott outNamefájlba adhatja ki. A desKey metódus paraméterei desIV 8 bájtos tömbök. A példa futtatásához telepítve kell lennie a magas titkosítási csomagnak.

private static void EncryptData(string inName, string outName, byte[] aesKey, byte[] aesIV)
 {
     //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.

     Aes aes = Aes.Create();
     CryptoStream encStream = new CryptoStream(fout, aes.CreateEncryptor(aesKey, aesIV), 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();
 }
Private Shared Sub EncryptData(inName As String, outName As String, _
rijnKey() As Byte, rijnIV() As Byte)

    'Create the file streams to handle the input and output files.
    Dim fin As New FileStream(inName, FileMode.Open, FileAccess.Read)
    Dim fout As New FileStream(outName, FileMode.OpenOrCreate, _
       FileAccess.Write)
    fout.SetLength(0)
    
    'Create variables to help with read and write.
    Dim bin(100) As Byte 'This is intermediate storage for the encryption.
    Dim rdlen As Long = 0 'This is the total number of bytes written.
    Dim totlen As Long = fin.Length 'Total length of the input file.
    Dim len As Integer 'This is the number of bytes to be written at a time.
    'Creates the default implementation, which is RijndaelManaged.
    Dim rijn As SymmetricAlgorithm = SymmetricAlgorithm.Create()
    Dim encStream As 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 = Convert.ToInt32(rdlen + len)
        Console.WriteLine("{0} bytes processed", rdlen)
    End While
    
    encStream.Close()
fout.Close()
fin.Close()
End Sub

Megjegyzések

Az osztályból SymmetricAlgorithm származó osztályok titkosítási blokkláncolásnak (CBC) nevezett láncolási módot használnak, amelyhez kulcs (Key) és inicializálási vektor (IV) szükséges az adatok titkosítási átalakításához. Az osztályok egyikével SymmetricAlgorithm titkosított adatok visszafejtéséhez a tulajdonságot és a KeyIV tulajdonságot ugyanazokra az értékekre kell beállítania, amelyeket a titkosításhoz használtak. Ahhoz, hogy egy szimmetrikus algoritmus hasznos legyen, a titkos kulcsot csak a feladónak és a fogadónak kell ismernie.

Aes, DES, RC2és TripleDES szimmetrikus algoritmusok implementációi.

Vegye figyelembe, hogy származtatott osztályok használatakor biztonsági szempontból nem elég egyszerűen kényszeríteni egy szemétgyűjtést az objektum használatának befejezése után. Explicit módon meg kell hívnia az Clear objektum metódusát, hogy az objektumon belül minden bizalmas adatot nullázjon ki a felszabadítás előtt. Vegye figyelembe, hogy a szemétgyűjtés nem állítja ki az összegyűjtött objektumok tartalmát, hanem egyszerűen megjelöli a memóriát az újratelepítéshez. Így a szemétgyűjtési objektumban lévő adatok továbbra is jelen lehetnek a memória halomjában a nem foglalt memóriában. Titkosítási objektumok esetén ezek az adatok bizalmas információkat, például kulcsadatokat vagy egyszerű szövegblokkokat tartalmazhatnak.

A bizalmas adatokat tartalmazó .NET keretrendszer összes titkosítási osztálya implementál egy Clear metódust. Meghíváskor a Clear metódus nullákkal felülírja az objektumon belüli összes bizalmas adatot, majd felszabadítja az objektumot, hogy azok biztonságosan gyűjthetők legyenek. Ha az objektumot nullázták és feloldották, akkor a paraméterkészlettel rendelkező Dispose metódust úgy kell meghívniadisposing, hogy True az objektumhoz társított összes felügyelt és nem felügyelt erőforrást megsemmisítse.

Megjegyzések az implementálókhoz

Ha az SymmetricAlgorithm osztálytól örököl, felül kell bírálnia a következő tagokat: CreateDecryptor(Byte[], Byte[]), CreateEncryptor(Byte[], Byte[]), GenerateIV()és GenerateKey().

Konstruktorok

Name Description
SymmetricAlgorithm()

Inicializálja a SymmetricAlgorithm osztály új példányát.

Mezők

Name Description
BlockSizeValue

A titkosítási művelet blokkméretét jelöli bitekben.

FeedbackSizeValue

A titkosítási művelet visszajelzési méretét jelöli bitekben.

IVValue

A szimmetrikus algoritmus inicializálási vektorát (IV) jelöli.

KeySizeValue

A szimmetrikus algoritmus által használt titkos kulcs méretét jelöli bitekben.

KeyValue

A szimmetrikus algoritmus titkos kulcsát jelöli.

LegalBlockSizesValue

Megadja a szimmetrikus algoritmus által támogatott blokkméreteket bitekben.

LegalKeySizesValue

Megadja a szimmetrikus algoritmus által támogatott kulcsméreteket bitekben.

ModeValue

A szimmetrikus algoritmusban használt titkosítási módot jelöli.

PaddingValue

A szimmetrikus algoritmusban használt párnázási módot jelöli.

Tulajdonságok

Name Description
BlockSize

Lekéri vagy beállítja a titkosítási művelet blokkméretét bitekben.

FeedbackSize

Bitekben lekéri vagy beállítja a titkosítási művelet visszajelzési méretét a titkosítási (CFB) és a kimeneti visszajelzési (OFB) titkosítási módokhoz.

IV

Lekéri vagy beállítja a szimmetrikus algoritmus inicializálási vektorát (IV).

Key

Lekéri vagy beállítja a szimmetrikus algoritmus titkos kulcsát.

KeySize

Lekéri vagy beállítja a szimmetrikus algoritmus által használt titkos kulcs méretét bitekben.

LegalBlockSizes

Lekéri a szimmetrikus algoritmus által támogatott blokkméreteket bitekben.

LegalKeySizes

Bitekben lekéri a szimmetrikus algoritmus által támogatott kulcsméreteket.

Mode

Lekéri vagy beállítja a szimmetrikus algoritmus működési módját.

Padding

Lekéri vagy beállítja a szimmetrikus algoritmusban használt párnázási módot.

Metódusok

Name Description
Clear()

Az osztály által SymmetricAlgorithm használt összes erőforrást felszabadítja.

Create()
Elavult.
Elavult.

Létrehoz egy alapértelmezett titkosítási objektumot a szimmetrikus algoritmus végrehajtásához.

Create(String)
Elavult.

Létrehozza a szimmetrikus algoritmus végrehajtásához használt megadott titkosítási objektumot.

CreateDecryptor()

Szimmetrikus visszafejtési objektumot hoz létre az aktuális Key tulajdonsággal és inicializálási vektorral (IV).

CreateDecryptor(Byte[], Byte[])

Ha egy származtatott osztályban felül van bírálva, egy szimmetrikus visszafejtési objektumot hoz létre a megadott Key tulajdonsággal és inicializálási vektorral (IV).

CreateEncryptor()

Szimmetrikus titkosító objektumot hoz létre az aktuális Key tulajdonsággal és inicializálási vektorral (IV).

CreateEncryptor(Byte[], Byte[])

Származtatott osztály felülírásakor egy szimmetrikus titkosítási objektumot hoz létre a megadott Key tulajdonsággal és inicializálási vektorral (IV).

DecryptCbc(Byte[], Byte[], PaddingMode)

Az adatok visszafejtése CBC módban a megadott kitöltési móddal.

DecryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode)

Az adatok visszafejtése CBC módban a megadott kitöltési móddal.

DecryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode)

Visszafejti az adatokat a megadott pufferbe CBC móddal a megadott kitöltési móddal.

DecryptCfb(Byte[], Byte[], PaddingMode, Int32)

Az adatok visszafejtése CFB módban a megadott kitöltési móddal és visszajelzési mérettel.

DecryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode, Int32)

Az adatok visszafejtése CFB módban a megadott kitöltési móddal és visszajelzési mérettel.

DecryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)

Visszafejti az adatokat a megadott pufferbe, CFB módban a megadott kitöltési móddal és visszajelzési mérettel.

DecryptEcb(Byte[], PaddingMode)

Az adatok visszafejtése EKB-módban, a megadott kitöltési móddal.

DecryptEcb(ReadOnlySpan<Byte>, PaddingMode)

Az adatok visszafejtése EKB-módban, a megadott kitöltési móddal.

DecryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode)

Visszafejti az adatokat a megadott pufferbe az EKB-mód és a megadott kitöltési mód használatával.

Dispose()

Az osztály aktuális példánya által használt összes erőforrást felszabadítja SymmetricAlgorithm .

Dispose(Boolean)

Felszabadítja a felügyelt erőforrások által SymmetricAlgorithm használt nem felügyelt erőforrásokat, és opcionálisan felszabadítja a felügyelt erőforrásokat.

EncryptCbc(Byte[], Byte[], PaddingMode)

A megadott kitöltési móddal CBC módban titkosítja az adatokat.

EncryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode)

A megadott kitöltési móddal CBC módban titkosítja az adatokat.

EncryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode)

A megadott pufferbe titkosítja az adatokat A CBC mód és a megadott kitöltési mód használatával.

EncryptCfb(Byte[], Byte[], PaddingMode, Int32)

CfB módban titkosítja az adatokat a megadott kitöltési móddal és visszajelzési mérettel.

EncryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode, Int32)

CfB módban titkosítja az adatokat a megadott kitöltési móddal és visszajelzési mérettel.

EncryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)

Titkosítja az adatokat a megadott pufferbe, CFB módban a megadott kitöltési móddal és visszajelzési mérettel.

EncryptEcb(Byte[], PaddingMode)

A megadott kitöltési móddal titkosítja az adatokat EKB-módban.

EncryptEcb(ReadOnlySpan<Byte>, PaddingMode)

A megadott kitöltési móddal titkosítja az adatokat EKB-módban.

EncryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode)

A megadott pufferbe titkosítja az adatokat az EKB-mód és a megadott kitöltési mód használatával.

Equals(Object)

Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal.

(Öröklődés forrása Object)
Finalize()

Ez a tag felülbírálások Finalize(), és a teljesebb dokumentáció is elérhető lehet ebben a témakörben.

Lehetővé teszi, Object hogy megkísérlje felszabadítani az erőforrásokat, és más tisztítási műveleteket hajt végre, mielőtt a Object szemétgyűjtés visszaköveteli.

GenerateIV()

Ha egy származtatott osztályban felül van bírálva, az algoritmushoz használandó véletlenszerű inicializálási vektort (IV) hoz létre.

GenerateKey()

Ha egy származtatott osztályban felül van bírálva, létrehoz egy véletlenszerű kulcsot (Key) az algoritmushoz.

GetCiphertextLengthCbc(Int32, PaddingMode)

Lekéri a titkosítási szöveg hosszát egy adott kitöltési móddal és egyszerű szöveghosszsal CBC módban.

GetCiphertextLengthCfb(Int32, PaddingMode, Int32)

Lekéri a rejtjelek hosszát egy adott kitöltési móddal és egyszerű szöveghosszsal CFB módban.

GetCiphertextLengthEcb(Int32, PaddingMode)

Lekéri a titkosítási szöveg hosszát egy adott kitöltési móddal és egyszerű szöveges hosszúsággal EKB módban.

GetHashCode()

Ez az alapértelmezett kivonatoló függvény.

(Öröklődés forrása Object)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
SetKey(ReadOnlySpan<Byte>)

Beállítja a példány kulcsát.

SetKeyCore(ReadOnlySpan<Byte>)

Beállítja a példány kulcsát.

ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)
TryDecryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode)

Megkísérli visszafejteni az adatokat a megadott pufferbe CBC móddal a megadott kitöltési móddal.

TryDecryptCbcCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)

Származtatott osztályban felülbírálva megkísérli visszafejteni az adatokat a megadott pufferbe CBC móddal a megadott kitöltési móddal.

TryDecryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode, Int32)

Megkísérli visszafejteni az adatokat a megadott pufferbe CFB móddal a megadott kitöltési móddal és visszajelzési mérettel.

TryDecryptCfbCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32, Int32)

Származtatott osztályban felülbírálva megkísérli visszafejteni az adatokat a megadott pufferbe, a megadott párnázási móddal és visszajelzési mérettel rendelkező CFB móddal.

TryDecryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)

Megkísérli visszafejteni az adatokat a megadott pufferbe az EKB-mód és a megadott kitöltési mód használatával.

TryDecryptEcbCore(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)

Származtatott osztályban felülbírálva megkísérli az adatok visszafejtését a megadott pufferbe az EKB-mód és a megadott kitöltési mód használatával.

TryEncryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode)

Megkísérli az adatok titkosítását a megadott pufferbe CBC móddal a megadott kitöltési móddal.

TryEncryptCbcCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)

Ha egy származtatott osztályban felülbírált, megkísérli az adatok titkosítását a megadott pufferbe cBC móddal, a megadott kitöltési móddal.

TryEncryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode, Int32)

Megkísérli titkosítani az adatokat a megadott pufferbe, a megadott kitöltési móddal és visszajelzési mérettel rendelkező CFB módban.

TryEncryptCfbCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32, Int32)

Ha egy származtatott osztályban felülbírált, megkísérli az adatok titkosítását a megadott pufferbe, CFB módban a megadott kitöltési móddal és visszajelzési mérettel.

TryEncryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)

Megkísérli az adatok titkosítását a megadott pufferbe az EKB-mód és a megadott kitöltési mód használatával.

TryEncryptEcbCore(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)

Ha egy származtatott osztályban felülbírálta az adatokat, megkísérli az adatok titkosítását a megadott pufferbe az EKB-mód és a megadott kitöltési mód használatával.

ValidKeySize(Int32)

Meghatározza, hogy a megadott kulcsméret érvényes-e az aktuális algoritmusra.

Explicit interfész-implementációk

Name Description
IDisposable.Dispose()

Ez az API a termékinfrastruktúrát támogatja, és közvetlenül a kódból nem használható.

Felszabadítja a felügyelt erőforrások által SymmetricAlgorithm használt nem felügyelt erőforrásokat, és opcionálisan felszabadítja a felügyelt erőforrásokat.

A következőre érvényes:

Lásd még