SymmetricAlgorithm Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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
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. |