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.
Karma veriler, herhangi bir türde içerik ve içeriğin karmasından oluşur. Mesaj içeriğinin, karma oluşturulduktan sonra değiştirilmediğini onaylamak yalnızca gerekli olduğunda kullanılabilir.
Karma ileti oluştururken birden çok karma algoritması ve birden fazla karma olabilir. Aşağıdaki çizimde karma bir iletiyi kodlamak için gereken görevler gösterilmektedir. Prosedür, görselden sonra gelen metinde açıklanmıştır.
Karmaşık mesaj oluşturmak için
- Karmalanacak verilere işaretçi alın.
- Kullanılacak karma algoritmasını seçin.
- Hash algoritmasını kullanarak verileri bir karma işlevinden geçirin.
- Kodlanmış iletiye orijinal verileri, karma algoritmalarını ve karmaları ekleyin.
Az önce özetlenen görevleri gerçekleştirmek üzere alt düzey ileti işlevlerini kullanmak için aşağıdaki yordamı kullanın.
Düşük düzeyli ileti işlevlerini kullanarak bir mesajı karmak ve kodlamak için
İşlenecek içeriği oluşturun veya edinin.
Bir şifreleme sağlayıcısı alın.
CMSG_HASHED_ENCODE_INFO yapısını başlatın.
Kodlanmış ileti blobunun boyutunu almak için CryptMsgCalculateEncodedLengthçağırın. Bunun için bellek ayırın.
CryptMsgOpenToEncodeçağrısını yaparak, dwMsgType parametresi için CMSG_HASHED ve pvMsgEncodeInfo parametresi için CMSG_HASHED_ENCODE_INFO işaretçisini geçirin. Bu çağrı sonucunda, açılan iletinin bir tanıtıcısını edinirsiniz.
CryptMsgUpdateçağrısını yaparak, 5. adımda alınan tanıtıcıyı ve karma ve kodlanacak verilere yönelik bir işaretçiyi geçirin. Bu işlev, kodlama işlemini tamamlamak için gerektiği kadar çağrılabilir.
CryptMsgGetParamçağrısını yaparak, 5. adımda alınan tanıtıcıyı ve istenen, kodlanmış verilere erişmek için uygun parametre türlerini iletin. Örneğin, PKCS #7 iletisinin tamamına işaretçi almak için CMSG_CONTENT_PARAM'i geçirin.
Bu kodlamanın sonucu, zarflı ileti gibi başka bir kodlanmış ileti için iç veri kullanılacaksa CMSG_BARE_CONTENT_PARAM geçirilmelidir. Bunu gösteren bir örnek için bkz. Zarflı İleti Kodlama için Alternatif Kod.
CryptMsgCloseçağrısı yaparak iletiyi kapatın.
Bu yordamın sonucu, özgün verileri, karma algoritmaları ve bu verilerin karma değeri içeren kodlanmış bir iletidir. 7. adımda BLOB kodlanmış iletiye bir gösterici elde edilir.
Aşağıdaki iki yordam karma verilerin kodunu çözer ve ardından doğrular.
Karma veri kodunu çözmek için
- Kodlanmış BLOB'a bir işaretçi alın.
- CryptMsgOpenToDecodeçağrısı yaparak gerekli bağımsız değişkenleri geçirin.
- CryptMsgUpdate fonksiyonunu bir kez çağırın ve 2. adımda alınan tanıtıcı ile çözülecek verilerin işaretçisini iletin. Bu, ileti türüne bağlı olarak iletide uygun eylemlerin yapılmasına neden olur.
- CryptMsgGetParamçağrısı yapın, 2. adımda alınan tanıtıcıyı geçirin ve istenen, kodu çözülen verilere erişmek için uygun parametre türlerini geçirin. Örneğin, çözülen içeriğin işaretçisini almak için CMSG_CONTENT_PARAM'ı geçirin.
Karma değerini doğrulamak için
- CryptMsgControlçağırarak karmaları doğrulamak için CMSG_CTRL_VERIFY_HASH geçirin.
- İletiyi kapatmak için CryptMsgCloseçağırın.
Örnek bir program için bkz. Örnek C Programı: Karma İleti kodlama ve kod çözme.