Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
CNG API'si, belirli bir sağlayıcı yerine gerekli şifreleme algoritmasını belirterek sağlayıcı yüklemenizi sağlayan genişletilebilir bir sağlayıcı modeli uygular. Bunun avantajı, bir algoritma sağlayıcısının değiştirilebilir veya yükseltilebilir olmasıdır ve yeni sağlayıcıyı kullanmak için kodunuzu hiçbir şekilde değiştirmeniz gerekmez. Ayrıca, gelecekte bazı algoritmaların güvenli olmadığı belirlenirse, bu algoritmanın daha güvenli bir sürümü kodunuzu etkilemeden yüklenebilir. CNG API'lerinin çoğu için sağlayıcı veya sağlayıcı tarafından oluşturulan bir nesne gerekir.
Şifreleme temel işlemleri için CNG API'sini kullanmayla ilgili tipik adımlar şunlardır:
- Algoritma Sağlayıcısını Açma
- Algoritma Özelliklerini Alma veya Ayarlama
- Anahtar Oluşturma veya İçeri Aktarma
- Şifreleme İşlemleri Gerçekleştirme
- Algoritma Sağlayıcısını Kapatma
Daha fazla bilgi için bkz . Programlama Örnekleri.
Algoritma Sağlayıcısını Açma
BCryptOpenAlgorithmProvider işlevi, BCryptCreateHash veya BCryptGenerateKeyPair gibi sonraki CNG API'lerinde kullanılan bir algoritma sağlayıcısı tanıtıcısı sağlar.
Algoritma Özelliklerini Alma veya Ayarlama
Algoritmanın anahtar boyutu veya geçerli işlem modu gibi uygulama ayrıntılarını almak için algoritma sağlayıcı tutamacını kullanabilirsiniz. Belirli özellikleri elde etmek için BCryptGetProperty işlevini kullanırsınız.
Algoritmanın özelliklerini de değiştirebilirsiniz. Örneğin, AES ile ECB blok şifreleme zinciri kullanmak istiyorsanız, AES algoritmasının BCRYPT_CHAINING_MODE özelliğini BCRYPT_CHAIN_MODE_ECBolarak ayarlarsınız; özelliği, her bir AES anahtarını yapılandırmaya gerek kalmadan bu algoritma tanıtıcısı kullanılarak oluşturulan tüm AES anahtarlarına atanır. Bu özellikleri değiştirmek için BCryptSetProperty işlevini kullanırsınız.
Warning
Üretim verileri için ECB modunu kullanmayın. ECB her bloğu bağımsız olarak şifreler, yani özdeş düz metin blokları aynı şifreleme metni üretir ve verilerinize desenler sızdırır. CBC modunu rastgele başlatma vektörleriyle (IV) veya tercihen hem gizlilik hem de bütünlük sağlayan GCM (BCRYPT_CHAIN_MODE_GCM gibi kimliği doğrulanmış bir şifreleme modu) ile kullanın.
Anahtar Oluşturma veya İçeri Aktarma
Kullandığınız algoritmanın türüne bağlı olarak bir anahtar oluşturmanız veya yüklemeniz gerekebilir. Örneğin, BCryptEncrypt işlevi ilk parametre için bir anahtar tanıtıcısını alır. Bu işlevin verileri AES gibi simetrik bir şifreleme algoritmasıyla şifrelemesini istiyorsanız, önce bir anahtar almanız gerekir. Anahtarı nasıl edindiğiniz, kullanılan algoritma türüne ve anahtarın kaynağına bağlıdır.
BCryptGenerateSymmetricKey ve BCryptGenerateKeyPair işlevleriyle kısa ömürlü anahtarlar oluşturabilirsiniz. Ayrıca BCryptImportKey ve BCryptImportKeyPair işlevleriyle bellek BLOB'undan kısa ömürlü anahtarları içeri aktarabilirsiniz.
Kalıcı anahtarlar için anahtar depolama işlevlerini kullanarak bir anahtar depolama sağlayıcısı yükler ve ardından anahtarları oluşturur veya yüklersiniz. Bu işlevleri, herhangi bir kapsayıcı adı yerine NULL ileterek geçici anahtarlar oluşturmak veya yüklemek için de kullanabilirsiniz. Anahtar depolama işlevleri hakkında daha fazla bilgi için bkz. CNG Anahtar Depolama İşlevleri.
Şifreleme İşlemleri Gerçekleştirme
Artık sırasıyla BCryptEncrypt veya BCryptDecrypt işlevlerini kullanarak verileri şifreleme veya şifre çözme gibi şifreleme işlemini gerçekleştirmeye hazırsınız.
Algoritma Sağlayıcısını Kapatma
Sağlayıcı artık gerekli olmadığında sağlayıcıyı kapatmak için tanıtıcıyı BCryptCloseAlgorithmProvider işlevine geçirmeniz gerekir. Bu, sağlayıcının söz konusu algoritma sağlayıcı örneği için ayrılmış olan tüm kaynakları serbest bırakmasına neden olur. Sağlayıcı tanıtıcısı kapatıldıktan sonra yeniden kullanılamaz.
Sağlayıcının yüklenmesi görece zaman yoğunluklu bir işlem olabilir. Bu nedenle, uygulamanızın ömrü boyunca birden çok kez başvuracağınız tüm sağlayıcı tanıtıcılarını önbelleğe almalısınız.
Programlama Örnekleri
Aşağıdaki örneklerde, CNG kullanarak belirli şifreleme işlemlerinin nasıl gerçekleştirildiği açıklanmaktadır:
- CNG ile Karma Oluşturma
- Verileri CNG ile İmzalama
- CNG ile Verileri Şifrelemeyi
- ML-DSA'ın CNG ile kullanımı
- ML-KEM'ın CNG ile kullanımı