SymmetricAlgorithm Sınıf

Tanım

Simetrik algoritmaların tüm uygulamalarının devralması gereken soyut temel sınıfı temsil eder.

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
Devralma
SymmetricAlgorithm
Türetilmiş
Öznitelikler
Uygulamalar

Örnekler

Aşağıdaki kod örneği, tarafından belirtilen bir dosyayı şifrelemek için belirtilen özellik ve başlatma vektörü ( ) ile sınıfını kullanır ve tarafından belirtilen dosyaya şifrelenmiş Aes Key IV inName sonucun çıkışını outName sağlar. yöntemine desKey desIV ve parametreleri 8 byte dizileridir. Bu örneği çalıştırmak için yüksek şifreleme paketinin yüklü olması gerekir.

void EncryptData( String^ inName, String^ outName, array<Byte>^aesKey, array<Byte>^aesIV )
{
   
   //Create the file streams to handle the input and output files.
   FileStream^ fin = gcnew FileStream( inName,FileMode::Open,FileAccess::Read );
   FileStream^ fout = gcnew FileStream( outName,FileMode::OpenOrCreate,FileAccess::Write );
   fout->SetLength( 0 );
   
   //Create variables to help with read and write.
   array<Byte>^bin = gcnew array<Byte>(100);
   long rdlen = 0; //This is the total number of bytes written.

   long totlen = (long)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 = gcnew 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 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

Açıklamalar

sınıfından türetilen sınıflar, veriler üzerinde şifreleme dönüşümleri gerçekleştirmek için anahtar ( ) ve başlatma vektörü ( ) gerektiren şifre blok zincirleme (CBC) adlı bir zincirleme SymmetricAlgorithm Key modu IV kullanır. Sınıflardan biri kullanılarak şifrelenen verilerin şifresini çözmek için özelliğini ve özelliğini şifreleme için SymmetricAlgorithm Key kullanılan IV değerlerle aynı değerlere ayarlayabilirsiniz. Simetrik algoritmanın yararlı olması için gizli anahtarın yalnızca gönderen ve alıcı tarafından bilindiği gerekir.

Aes, DES RC2 , ve , TripleDES simetrik algoritmaların uygulamalarıdır.

Türetilmiş sınıflar kullanırken, güvenlik açısından bakıldığında, nesnesini kullanmayı bitirdikten sonra bir çöp toplamayı zorlamanın yeterli olmadığını unutmayın. Serbest bırakmadan önce nesne içindeki tüm hassas verileri yok etmek için nesne Clear üzerinde yöntemini açıkça çağırmanız gerekir. Atık toplamanın toplanan nesnelerin içeriğini sildik, ancak belleği yeniden konumlandırma için kullanılabilir olarak işaretler. Bu nedenle, atık toplama nesnesinin içinde yer alan veriler, ayırmamış bellekte bellek yığınında hala mevcut olabilir. Şifreleme nesneleri söz konusu olursa, bu veriler anahtar verileri veya düz metin bloğu gibi hassas bilgiler içerebilir.

Hassas verileri .NET Framework tüm şifreleme sınıfları bir yöntem Clear kullanır. çağrıldı mı, yöntemi nesne içindeki tüm hassas verilerin üzerine sıfırlar ile yazarak nesneyi serbest bırakarak güvenli bir şekilde Clear çöp toplanabilir. Nesne sıfırlandı ve serbest bırakıldı, ardından nesnesiyle ilişkili tüm yönetilen ve yönetilemeyen kaynakları atarak parametresi olarak ayarlanmış yöntemini Dispose disposing True çağırmanız gerekir.

Uygulayanlara Notlar

sınıfından SymmetricAlgorithm devralınca, şu üyeleri geçersiz kılmalı: CreateDecryptor(Byte[], Byte[]) , , ve CreateEncryptor(Byte[], Byte[]) GenerateIV() GenerateKey() .

Oluşturucular

SymmetricAlgorithm()

SymmetricAlgorithm sınıfının yeni bir örneğini başlatır.

Alanlar

BlockSizeValue

Şifreleme işlemi bitleri olarak blok boyutunu temsil eder.

FeedbackSizeValue

Şifreleme işlemi bitleri içinde geri bildirim boyutunu temsil eder.

IVValue

Simetrik algoritma için başlatma IV vektörü ( ) temsil eder.

KeySizeValue

Simetrik algoritma tarafından kullanılan gizli anahtarın bit cinsinden boyutunu temsil eder.

KeyValue

Simetrik algoritma için gizli anahtarı temsil eder.

LegalBlockSizesValue

Simetrik algoritma tarafından desteklenen blok boyutlarını bit cinsinden belirtir.

LegalKeySizesValue

Simetrik algoritma tarafından desteklenen bit cinsinden anahtar boyutlarını belirtir.

ModeValue

Simetrik algoritmada kullanılan şifreleme modunu temsil eder.

PaddingValue

Simetrik algoritmada kullanılan doldurma modunu temsil eder.

Özellikler

BlockSize

Şifreleme işlemi bitleri olarak blok boyutunu alır veya ayarlar.

FeedbackSize

Şifreleme Geri Bildirimi (CFB) ve Çıkış Geri Bildirimi (OFB) şifreleme modlarına yönelik şifreleme işlemiyle ilgili geri bildirim boyutunu alır veya ayarlar.

IV

Simetrik algoritma için başlatma vektörü IV ( ) alır veya ayarlar.

Key

Simetrik algoritma için gizli anahtarı alır veya ayarlar.

KeySize

Simetrik algoritma tarafından kullanılan gizli anahtarın boyutunu bit olarak alır veya ayarlar.

LegalBlockSizes

Simetrik algoritma tarafından desteklenen blok boyutlarını bit cinsinden alır.

LegalKeySizes

Simetrik algoritma tarafından desteklenen bit cinsinden anahtar boyutlarını alır.

Mode

Simetrik algoritmanın işlem modunu alır veya ayarlar.

Padding

Simetrik algoritmada kullanılan doldurma modunu alır veya ayarlar.

Yöntemler

Clear()

sınıfı tarafından kullanılan tüm kaynakları SymmetricAlgorithm serbest bıraktır.

Create()
Kullanımdan kalktı.

Simetrik algoritmayı gerçekleştirmek için kullanılan varsayılan bir şifreleme nesnesi oluşturur.

Create(String)

Simetrik algoritmayı gerçekleştirmek için kullanılan belirtilen şifreleme nesnesini oluşturur.

CreateDecryptor()

Geçerli özellik ve başlatma vektörü () ile Key simetrik bir şifre çözücü nesnesi IV oluşturur.

CreateDecryptor(Byte[], Byte[])

Türetilmiş bir sınıfta geçersiz kılınan, belirtilen özellik ve başlatma vektörü () ile simetrik bir Key şifre çözücü nesnesi IV oluşturur.

CreateEncryptor()

Geçerli özellik ve başlatma vektörü () ile Key simetrik bir şifreleme nesnesi IV oluşturur.

CreateEncryptor(Byte[], Byte[])

Türetilmiş bir sınıfta geçersiz kılınan, belirtilen özellik ve başlatma vektörü () ile Key simetrik bir şifreleme nesnesi IV oluşturur.

DecryptCbc(Byte[], Byte[], PaddingMode)
DecryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode)
DecryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode)
DecryptCfb(Byte[], Byte[], PaddingMode, Int32)
DecryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode, Int32)
DecryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)
DecryptEcb(Byte[], PaddingMode)
DecryptEcb(ReadOnlySpan<Byte>, PaddingMode)
DecryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode)
Dispose()

SymmetricAlgorithm sınıfının geçerli örneği tarafından kullanılan tüm kaynakları serbest bırakır.

Dispose(Boolean)

SymmetricAlgorithm tarafından kullanılan yönetilmeyen kaynakları serbest bırakır ve yönetilen kaynakları isteğe bağlı olarak serbest bırakır.

EncryptCbc(Byte[], Byte[], PaddingMode)
EncryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode)
EncryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode)
EncryptCfb(Byte[], Byte[], PaddingMode, Int32)
EncryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode, Int32)
EncryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)
EncryptEcb(Byte[], PaddingMode)
EncryptEcb(ReadOnlySpan<Byte>, PaddingMode)
EncryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode)
Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
Finalize()

Bu üye geçersiz Finalize() kılar ve bu konuda daha eksiksiz belgeler kullanılabilir.

, atık toplama tarafından geri dönmeden önce kaynakların serbest bırakıla ve Object Object diğer temizleme işlemlerini gerçekleştirmeye çalışmasına izin verir.

GenerateIV()

Türetilmiş bir sınıfta geçersiz kılınan, algoritma için kullanmak üzere rastgele başlatma vektörü () IV üretir.

GenerateKey()

Türetilmiş bir sınıfta geçersiz kılınca, algoritma için kullanmak üzere rastgele bir anahtar ( Key ) üretir.

GetCiphertextLengthCbc(Int32, PaddingMode)

CBC modunda verilen doldurma moduna ve düz metin uzunluğuna sahip bir şifreleme metni uzunluğunu alır.

GetCiphertextLengthCfb(Int32, PaddingMode, Int32)

CfB modunda verilen doldurma moduna ve düz metin uzunluğuna sahip bir şifreleme metni uzunluğunu alır.

GetCiphertextLengthEcb(Int32, PaddingMode)

EcB modunda verilen doldurma moduna ve düz metin uzunluğuna sahip bir şifreleme metni uzunluğunu alır.

GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)
TryDecryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode)
TryDecryptCbcCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)
TryDecryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode, Int32)
TryDecryptCfbCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32, Int32)
TryDecryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)
TryDecryptEcbCore(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)
TryEncryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode)
TryEncryptCbcCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)
TryEncryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode, Int32)
TryEncryptCfbCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32, Int32)
TryEncryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)
TryEncryptEcbCore(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)
ValidKeySize(Int32)

Belirtilen anahtar boyutunun geçerli algoritma için geçerli olup olmadığını belirler.

Belirtik Arabirim Kullanımları

IDisposable.Dispose()

Bu API, ürün altyapısını destekler ve doğrudan kodunuzdan kullanıma yönelik değildir.

SymmetricAlgorithm tarafından kullanılan yönetilmeyen kaynakları serbest bırakır ve yönetilen kaynakları isteğe bağlı olarak serbest bırakır.

Şunlara uygulanır

Ayrıca bkz.