Aracılığıyla paylaş


Algoritma Adlarını Şifreleme Sınıflarıyla Eşleştirme

Not

Bu makale .NET Framework'e özgüdür. .NET 6 ve sonraki sürümleri de dahil olmak üzere daha yeni .NET uygulamaları için geçerli değildir.

Bir geliştiricinin Windows SDK'sını kullanarak şifreleme nesnesi oluşturmasının dört yolu vardır:

  • Yeni işlecini kullanarak bir nesne oluşturun.

  • Bu algoritmanın soyut sınıfında Create yöntemini çağırarak belirli bir şifreleme algoritması uygulayan bir nesne oluşturun.

  • yöntemini çağırarak CryptoConfig.CreateFromName belirli bir şifreleme algoritması uygulayan bir nesne oluşturun.

  • Bu algoritma türü için soyut sınıfta Create yöntemini çağırarak bir şifreleme algoritmaları sınıfı (simetrik blok şifrelemesi gibi) uygulayan bir nesne oluşturun.SymmetricAlgorithm

Örneğin, bir geliştiricinin bir bayt kümesinin SHA1 karması hesaplamak istediğini varsayalım. Ad System.Security.Cryptography alanı, SHA1 algoritmasının biri tamamen yönetilen ve diğeri CryptoAPI sarmalayan iki uygulamasını içerir. Geliştirici, yeni işleci çağırarak belirli bir SHA1 uygulamasının (örneğin, ) örneğini SHA1Managedoluşturmayı seçebilir. Ancak, sınıf SHA1 karma algoritmasını uyguladığı sürece ortak dil çalışma zamanının hangi sınıfa yüklendiği önemli değilse, geliştirici yöntemini çağırarak SHA1.Create bir nesne oluşturabilir. Bu yöntem, SHA1 karma algoritmasının bir uygulamasını döndürmesi gereken System.Security.Cryptography.CryptoConfig.CreateFromName("System.Security.Cryptography.SHA1") öğesini çağırır.

Geliştirici ayrıca System.Security.Cryptography.CryptoConfig.CreateFromName("SHA1") öğesini de çağırabilir çünkü şifreleme yapılandırması varsayılan olarak .NET Framework'te gönderilen algoritmalar için kısa adlar içerir.

Hangi karma algoritmasının kullanıldığı önemli değilse, geliştirici karma dönüştürmesi uygulayan bir nesne döndüren yöntemini çağırabilir HashAlgorithm.Create .

Yapılandırma Dosyalarında Algoritma Adlarını Eşleme

Varsayılan olarak, çalışma zamanı dört senaryonun tümü için bir SHA1CryptoServiceProvider nesne döndürür. Ancak, makine yöneticisi son iki senaryodaki yöntemlerin döndüreceği nesne türünü değiştirebilir. Bunu yapmak için, kolay bir algoritma adını makine yapılandırma dosyasında (Machine.config) kullanmak istediğiniz sınıfla eşlemeniz gerekir.

Aşağıdaki örnek, System.Security.Cryptography.SHA1.Create, System.Security.CryptoConfig.CreateFromName("SHA1") ve System.Security.Cryptography.HashAlgorithm.Create'ın nesne MySHA1HashClass döndürmesi için çalışma zamanının nasıl yapılandırıldığını gösterir.

<configuration>
   <!-- Other configuration settings. -->
   <mscorlib>
      <cryptographySettings>
         <cryptoNameMapping>
            <cryptoClasses>
               <cryptoClass MySHA1Hash="MySHA1HashClass, MyAssembly
                  Culture='en', PublicKeyToken=a5d015c7d5a0b012,
                  Version=1.0.0.0"/>
            </cryptoClasses>
            <nameEntry name="SHA1" class="MySHA1Hash"/>
            <nameEntry name="System.Security.Cryptography.SHA1"
                       class="MySHA1Hash"/>
            <nameEntry name="System.Security.Cryptography.HashAlgorithm"
                       class="MySHA1Hash"/>
         </cryptoNameMapping>
      </cryptographySettings>
   </mscorlib>
</configuration>

cryptoClass> öğesinde< özniteliğin adını belirtebilirsiniz (önceki örnekte özniteliği MySHA1Hashadlandırılır). cryptoClass> öğesindeki özniteliğinin <değeri, ortak dil çalışma zamanının sınıfını bulmak için kullandığı bir dizedir. Tam Tür Adlarını Belirtme bölümünde belirtilen gereksinimleri karşılayan herhangi bir dizeyi kullanabilirsiniz.

Birçok algoritma adı aynı sınıfa eşlenebilir. <nameEntry> öğesi bir sınıfı tek bir kolay algoritma adıyla eşler. name özniteliği, System.Security.Cryptography.CryptoConfig.CreateFromName yöntemi çağrılırken kullanılan bir dize veya ad alanında bir soyut şifreleme sınıfının System.Security.Cryptography adı olabilir. sınıf özniteliğinin değeri cryptoClass> öğesindeki özniteliğin <adıdır.

Not

veya Security.CryptoConfig.CreateFromName("SHA1") yöntemini çağırarak SHA1.Create bir SHA1 algoritması alabilirsiniz. Her yöntem yalnızca SHA1 algoritmasını uygulayan bir nesne döndürmeyi garanti eder. Bir algoritmanın her kolay adını yapılandırma dosyasındaki aynı sınıfla eşlemeniz gerekmez.

Varsayılan adların ve eşledikleri sınıfların listesi için bkz CryptoConfig. .

Ayrıca bkz.