Bagikan melalui


Memetakan Nama Algoritma ke Kelas Kriptografi

Catatan

Artikel ini khusus untuk .NET Framework. Ini tidak berlaku untuk implementasi .NET yang lebih baru, termasuk .NET 6 dan versi yang lebih baru.

Ada empat cara pengembang dapat membuat objek kriptografi menggunakan SDK Windows:

  • Membuat objek dengan menggunakan operator baru.

  • Membuat objek yang mengimplementasikan algoritma kriptografi tertentu dengan memanggil metode Buat pada kelas abstrak untuk algoritma tersebut.

  • Membuat objek yang mengimplementasikan algoritma kriptografi tertentu dengan memanggil metode CryptoConfig.CreateFromName.

  • Membuat objek yang mengimplementasikan kelas algoritma kriptografi (seperti cipher blok simetris) dengan memanggil metode Buat pada kelas abstrak untuk jenis algoritma tersebut (seperti SymmetricAlgorithm).

Misalnya, seorang pengembang ingin menghitung hash SHA1 dari satu set byte. Namespace System.Security.Cryptography berisi dua implementasi algoritma SHA1, satu implementasi murni terkelola dan satu lagi yang membungkus CryptoAPI. Pengembang dapat memilih untuk membuat instans implementasi SHA1 tertentu (seperti SHA1Managed) dengan memanggil operator baru. Namun, jika tidak masalah kelas mana yang memuat runtime bahasa umum selama kelas tersebut mengimplementasikan algoritma hash SHA1, pengembang dapat membuat objek dengan memanggil metode SHA1.Create. Metode ini memanggil System.Security.Cryptography.CryptoConfig.CreateFromName("System.Security.Cryptography.SHA1"), yang harus mengembalikan implementasi algoritma hash SHA1.

Pengembang juga dapat memanggil System.Security.Cryptography.CryptoConfig.CreateFromName("SHA1") karena, secara default, konfigurasi kriptografi menyertakan nama pendek untuk algoritma yang dikirimkan dalam .NET Framework.

Jika tidak masalah algoritma hash mana yang digunakan, pengembang dapat memanggil metode HashAlgorithm.Create, yang mengembalikan objek yang mengimplementasikan transformasi hashing.

Memetakan Nama Algoritma di File Konfigurasi

Secara default, Runtime mengembalikan objek SHA1CryptoServiceProvider untuk keempat skenario. Namun, administrator mesin dapat mengubah jenis objek yang dikembalikan oleh metode dalam dua skenario terakhir. Untuk melakukannya, Anda harus memetakan nama algoritma yang mudah diingat ke kelas yang ingin Anda gunakan dalam file konfigurasi mesin (Machine.config).

Contoh berikut menunjukkan cara mengonfigurasi Runtime sehingga System.Security.Cryptography.SHA1.Create, System.Security.CryptoConfig.CreateFromName("SHA1"), dan System.Security.Cryptography.HashAlgorithm.Create mengembalikan objek MySHA1HashClass.

<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>

Anda dapat menentukan nama atribut dalam elemen <cryptoClass> (contoh sebelumnya memberi nama atribut MySHA1Hash). Nilai atribut dalam elemen <cryptoClass> adalah string yang digunakan runtime bahasa umum untuk menemukan kelas. Anda dapat menggunakan string apa pun yang memenuhi persyaratan yang ditentukan dalam Menentukan Nama Jenis yang Sepenuhnya Memenuhi Syarat.

Banyak nama algoritma dapat dipetakan ke kelas yang sama. Elemen <nameEntry> memetakan kelas ke satu nama algoritma yang mudah diingat. Atribut name dapat berupa string yang digunakan saat memanggil metode System.Security.Cryptography.CryptoConfig.CreateFromName atau nama kelas kriptografi abstrak di namespace System.Security.Cryptography. Nilai atribut class adalah nama atribut di elemen <cryptoClass>.

Catatan

Anda bisa mendapatkan algoritma SHA1 dengan memanggil metode SHA1.Create atau Security.CryptoConfig.CreateFromName("SHA1"). Setiap metode hanya menjamin bahwa metode mengembalikan objek yang mengimplementasikan algoritma SHA1. Anda tidak harus memetakan setiap nama yang mudah diingat dari suatu algoritma ke kelas yang sama dalam file konfigurasi.

Untuk daftar nama default dan kelas yang dipetakannya, lihat CryptoConfig.

Lihat juga