SymmetricAlgorithm Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Representerar den abstrakta basklass som alla implementeringar av symmetriska algoritmer måste ärva från.
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
- Arv
-
SymmetricAlgorithm
- Härledda
- Attribut
- Implementeringar
Exempel
I följande kodexempel används Aes klassen med den angivna Key egenskapen och initieringsvektorn (IV) för att kryptera en fil som anges av inNameoch matar ut det krypterade resultatet till filen som anges av outName. Parametrarna desKey och desIV för metoden är 8-bytesmatriser. Du måste ha det högkrypteringspaketet installerat för att kunna köra det här exemplet.
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
Kommentarer
Klasserna som härleds från SymmetricAlgorithm klassen använder ett länkningsläge som kallas chifferblocklänkning (CBC), som kräver en nyckel (Key) och en initieringsvektor (IV) för att utföra kryptografiska omvandlingar på data. Om du vill dekryptera data som krypterats med någon av klasserna SymmetricAlgorithm måste du ange Key egenskapen och IV egenskapen till samma värden som användes för kryptering. För att en symmetrisk algoritm ska vara användbar måste den hemliga nyckeln endast vara känd för avsändaren och mottagaren.
Aes, DES, RC2, och TripleDES är implementeringar av symmetriska algoritmer.
Observera att när du använder härledda klasser räcker det inte att, ur ett säkerhetsperspektiv, helt enkelt tvinga fram en skräpinsamling när du är klar med att använda objektet. Du måste uttryckligen Clear anropa -metoden på objektet för att nollställa alla känsliga data i objektet innan det släpps. Observera att skräpinsamlingen inte nollar innehållet i insamlade objekt utan helt enkelt markerar minnet som tillgängligt för omallokering. Därför kan data som finns i ett skräpinsamlingsobjekt fortfarande finnas i minneshögen i oallokerat minne. När det gäller kryptografiska objekt kan dessa data innehålla känslig information, till exempel nyckeldata eller ett block med oformaterad text.
Alla kryptografiska klasser i .NET Framework som innehåller känsliga data implementerar en Clear-metod. När den Clear anropas skriver metoden över alla känsliga data i objektet med nollor och släpper sedan objektet så att det kan samlas in på ett säkert sätt. När objektet har nollställts och släppts bör du anropa Dispose metoden med parametern disposing inställd på för att True ta bort alla hanterade och ohanterade resurser som är associerade med objektet.
Anteckningar till implementerare
När du ärver från SymmetricAlgorithm klassen måste du åsidosätta följande medlemmar: CreateDecryptor(Byte[], Byte[]), CreateEncryptor(Byte[], Byte[]), GenerateIV()och GenerateKey().
Konstruktorer
| Name | Description |
|---|---|
| SymmetricAlgorithm() |
Initierar en ny instans av SymmetricAlgorithm klassen. |
Fält
| Name | Description |
|---|---|
| BlockSizeValue |
Representerar blockstorleken i bitar för den kryptografiska åtgärden. |
| FeedbackSizeValue |
Representerar feedbackstorleken i bitar för den kryptografiska åtgärden. |
| IVValue |
Representerar initieringsvektorn (IV) för den symmetriska algoritmen. |
| KeySizeValue |
Representerar storleken, i bitar, på den hemliga nyckel som används av den symmetriska algoritmen. |
| KeyValue |
Representerar den hemliga nyckeln för den symmetriska algoritmen. |
| LegalBlockSizesValue |
Anger de blockstorlekar i bitar som stöds av den symmetriska algoritmen. |
| LegalKeySizesValue |
Anger de nyckelstorlekar i bitar som stöds av den symmetriska algoritmen. |
| ModeValue |
Representerar chifferläget som används i den symmetriska algoritmen. |
| PaddingValue |
Representerar utfyllnadsläget som används i den symmetriska algoritmen. |
Egenskaper
| Name | Description |
|---|---|
| BlockSize |
Hämtar eller anger blockstorleken i bitar för den kryptografiska åtgärden. |
| FeedbackSize |
Hämtar eller anger feedbackstorleken i bitar för krypteringsåtgärden för chifferfeedback (CFB) och UTdatafeedback (OFB). |
| IV |
Hämtar eller anger initieringsvektorn (IV) för den symmetriska algoritmen. |
| Key |
Hämtar eller anger den hemliga nyckeln för den symmetriska algoritmen. |
| KeySize |
Hämtar eller anger storleken, i bitar, på den hemliga nyckel som används av den symmetriska algoritmen. |
| LegalBlockSizes |
Hämtar blockstorlekarna i bitar som stöds av den symmetriska algoritmen. |
| LegalKeySizes |
Hämtar de nyckelstorlekar, i bitar, som stöds av den symmetriska algoritmen. |
| Mode |
Hämtar eller anger läget för drift av den symmetriska algoritmen. |
| Padding |
Hämtar eller anger utfyllnadsläget som används i den symmetriska algoritmen. |
Metoder
| Name | Description |
|---|---|
| Clear() |
Släpper alla resurser som används av SymmetricAlgorithm klassen. |
| Create() |
Föråldrad.
Föråldrad.
Skapar ett standardkryptografiskt objekt som används för att utföra den symmetriska algoritmen. |
| Create(String) |
Föråldrad.
Skapar det angivna kryptografiska objektet som används för att utföra den symmetriska algoritmen. |
| CreateDecryptor() |
Skapar ett symmetriskt dekrypteringsobjekt med den aktuella Key egenskapen och initieringsvektorn (IV). |
| CreateDecryptor(Byte[], Byte[]) |
När det åsidosättas i en härledd klass skapar ett symmetriskt dekrypteringsobjekt med den angivna Key egenskapen och initieringsvektorn (IV). |
| CreateEncryptor() |
Skapar ett symmetriskt krypteringsobjekt med den aktuella Key egenskapen och initieringsvektorn (IV). |
| CreateEncryptor(Byte[], Byte[]) |
När det åsidosättas i en härledd klass skapar ett symmetriskt krypteringsobjekt med den angivna Key egenskapen och initieringsvektorn (IV). |
| DecryptCbc(Byte[], Byte[], PaddingMode) |
Dekrypterar data med CBC-läge med det angivna utfyllnadsläget. |
| DecryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode) |
Dekrypterar data med CBC-läge med det angivna utfyllnadsläget. |
| DecryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode) |
Dekrypterar data till den angivna bufferten med hjälp av CBC-läge med det angivna utfyllnadsläget. |
| DecryptCfb(Byte[], Byte[], PaddingMode, Int32) |
Dekrypterar data med CFB-läge med angivet utfyllnadsläge och feedbackstorlek. |
| DecryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode, Int32) |
Dekrypterar data med CFB-läge med angivet utfyllnadsläge och feedbackstorlek. |
| DecryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32) |
Dekrypterar data till den angivna bufferten med CFB-läge med angivet utfyllnadsläge och feedbackstorlek. |
| DecryptEcb(Byte[], PaddingMode) |
Dekrypterar data med ECB-läge med angivet utfyllnadsläge. |
| DecryptEcb(ReadOnlySpan<Byte>, PaddingMode) |
Dekrypterar data med ECB-läge med angivet utfyllnadsläge. |
| DecryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode) |
Dekrypterar data till den angivna bufferten med hjälp av ECB-läge med angivet utfyllnadsläge. |
| Dispose() |
Släpper alla resurser som används av den aktuella instansen SymmetricAlgorithm av klassen. |
| Dispose(Boolean) |
Släpper de ohanterade resurser som används av SymmetricAlgorithm och släpper eventuellt de hanterade resurserna. |
| EncryptCbc(Byte[], Byte[], PaddingMode) |
Krypterar data med CBC-läge med det angivna utfyllnadsläget. |
| EncryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode) |
Krypterar data med CBC-läge med det angivna utfyllnadsläget. |
| EncryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode) |
Krypterar data till den angivna bufferten med hjälp av CBC-läge med det angivna utfyllnadsläget. |
| EncryptCfb(Byte[], Byte[], PaddingMode, Int32) |
Krypterar data med CFB-läge med angivet utfyllnadsläge och feedbackstorlek. |
| EncryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode, Int32) |
Krypterar data med CFB-läge med angivet utfyllnadsläge och feedbackstorlek. |
| EncryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32) |
Krypterar data till den angivna bufferten med CFB-läge med angivet utfyllnadsläge och feedbackstorlek. |
| EncryptEcb(Byte[], PaddingMode) |
Krypterar data med ECB-läge med angivet utfyllnadsläge. |
| EncryptEcb(ReadOnlySpan<Byte>, PaddingMode) |
Krypterar data med ECB-läge med angivet utfyllnadsläge. |
| EncryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode) |
Krypterar data till den angivna bufferten med hjälp av ECB-läge med angivet utfyllnadsläge. |
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| Finalize() |
Den här medlemmen åsidosätter Finalize(), och mer fullständig dokumentation kan vara tillgänglig i det ämnet. Tillåter ett Object försök att frigöra resurser och utföra andra rensningsåtgärder innan Object den frigörs av skräpinsamlingen. |
| GenerateIV() |
När den åsidosättas i en härledd klass genererar en slumpmässig initieringsvektor (IV) som ska användas för algoritmen. |
| GenerateKey() |
När den åsidosättas i en härledd klass genererar en slumpmässig nyckel (Key) som ska användas för algoritmen. |
| GetCiphertextLengthCbc(Int32, PaddingMode) |
Hämtar längden på en chiffertext med ett angivet utfyllnadsläge och klartextlängd i CBC-läge. |
| GetCiphertextLengthCfb(Int32, PaddingMode, Int32) |
Hämtar längden på en chiffertext med ett angivet utfyllnadsläge och klartextlängd i CFB-läge. |
| GetCiphertextLengthEcb(Int32, PaddingMode) |
Hämtar längden på en chiffertext med ett angivet utfyllnadsläge och klartextlängd i ECB-läge. |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| SetKey(ReadOnlySpan<Byte>) |
Anger nyckeln för den här instansen. |
| SetKeyCore(ReadOnlySpan<Byte>) |
Anger nyckeln för den här instansen. |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |
| TryDecryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode) |
Försöker dekryptera data till den angivna bufferten med hjälp av CBC-läge med det angivna utfyllnadsläget. |
| TryDecryptCbcCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32) |
När de åsidosätts i en härledd klass försöker dekryptera data till den angivna bufferten med hjälp av CBC-läge med det angivna utfyllnadsläget. |
| TryDecryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode, Int32) |
Försöker dekryptera data till den angivna bufferten med CFB-läge med angivet utfyllnadsläge och feedbackstorlek. |
| TryDecryptCfbCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32, Int32) |
När de åsidosättas i en härledd klass försöker dekryptera data till den angivna bufferten med cfb-läge med angivet utfyllnadsläge och feedbackstorlek. |
| TryDecryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32) |
Försöker dekryptera data till den angivna bufferten med hjälp av ECB-läge med angivet utfyllnadsläge. |
| TryDecryptEcbCore(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32) |
När de åsidosättas i en härledd klass försöker dekryptera data till den angivna bufferten med hjälp av ECB-läge med det angivna utfyllnadsläget. |
| TryEncryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode) |
Försöker kryptera data till den angivna bufferten med hjälp av CBC-läge med det angivna utfyllnadsläget. |
| TryEncryptCbcCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32) |
När de åsidosätts i en härledd klass försöker kryptera data till den angivna bufferten med hjälp av CBC-läge med det angivna utfyllnadsläget. |
| TryEncryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode, Int32) |
Försöker kryptera data till den angivna bufferten med CFB-läge med angivet utfyllnadsläge och feedbackstorlek. |
| TryEncryptCfbCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32, Int32) |
När de åsidosättas i en härledd klass, försöker kryptera data till den angivna bufferten med cfb-läge med det angivna utfyllnadsläget och feedbackstorleken. |
| TryEncryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32) |
Försöker kryptera data till den angivna bufferten med hjälp av ECB-läge med det angivna utfyllnadsläget. |
| TryEncryptEcbCore(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32) |
När de åsidosättas i en härledd klass, försöker kryptera data till den angivna bufferten med hjälp av ECB-läge med det angivna utfyllnadsläget. |
| ValidKeySize(Int32) |
Avgör om den angivna nyckelstorleken är giltig för den aktuella algoritmen. |
Explicita gränssnittsimplementeringar
| Name | Description |
|---|---|
| IDisposable.Dispose() |
Detta API stöder produktinfrastrukturen och är inte avsett att användas direkt från koden. Släpper de ohanterade resurser som används av SymmetricAlgorithm och släpper eventuellt de hanterade resurserna. |