Shifrlash
Asimmetrik shifrlashda ikkita kalitdan foydalaniladi. Ulardan biri (ochiq kalit) dastlabki matnni shifrmatnga oʻgirishni, ikkinchisi esa (yopiq kalit) dastlabki matnga oʻgirishni taʼminlaydi. Samaradorlikni yanada oshirish maqsadida simmetrik va asimmetrik shifrlash algoritmlari birgalikda ishlatiladi. Bu holatda simmetrik shifrlashdan maʼlumotlarni ochiq kanallar orqali uzatishda maʼlumotlarni shifrlashda, asimmetrik shifrlashdan esa simmetrik shifrlash algoritmlarining kalitlarini shifrlashda ishlatiladi. CryptoAPI yordamida simmetrik shifrlash sxemasini amalga oshirish	Hozirgi kunda mavjud kriptografik shifrlash algoritmlarining asosida kriptografik kalit yotadi, shirlash algoritmlarining kriptobardoshliligi aynan shu kalitlarga bogʻliqdir. Shifrlash algoritmlari uchun kalitlarni generatsiya qilishning usullaridan biri bu parollardan (kalit soʻzdan) kriptografik kalit yaratishdir. Ushbu parol oʻzgaruvchan uzunlikda boʻladi va kriptografik kalitdan uzunligi kichik boʻladi. Lekin parol kalit yaratish uchun uncha yaxshi boʻlmagan material hisoblanadi, chunki foydalanuvchilar parol sifatida esda qoluvchi lugʻatlarda mavjud soʻzlardan koʻp foydalanadi, buni esa lugʻat yordamidagi hurujlardan osonlik bilan buzish mumkin. Odatda lugʻat yordamidagi hurujlar 105-106operatsiya yordamida amalga oshiriladi, shu sababli parollardan kalit yasash uzoq vaqt davom etishi kerak, bu vaqt hisoblash mashinalari uchun uzoq sanaladi, foydalanuvchilar uchun esa bilinmaydigan vaqtdir. Agar lugʻatdagi soʻzlar soni N ta, kalitnisaqlash vaqti T boʻlsa, u holdakalitdan parol yaratish uchun ketadigan vaqt t0quyidagi formula orqali hisoblanadi[22]: t0= 2T/N Agar kalitni saqlash muddati oʻrtacha T = 7kun = 6,1 *105 sekund, lugʻat kattaligi N = 106ta boʻlsa paroldan kalit yaratish vaqti t0 = 1,2 sekunddan kam boʻlmasligi zarur. Agar xavfsizlikning yuqoribosqichi talab etilsa bunday hollarda parol tasodifiy ketma-ketliklardan tashkil topishi zarur. Bunday ketma-ketliklarni kriptoprovayderda CryptGenRandomfunksiyasi yordamida yoki boshqa tasodifiy sonlar datchigidan olish mumkin[23]. Parollar yordamida kalit yaratishning bir qancha shartlari mavjud: -	parol ixtiyoriy uzunlikda berilishi mumkin, kalit esa fiksirlangan uzunlikda boʻladi; -	bir-biriga oʻxshash va yaqin parollardan, bir-biriga oʻxshamagan va uzoq kalitlar yaratilishi kerak; -	turli xil parollar yordamida bir xil kalitlar yaratilmasligi kerak; Bunday shartlar asosida kalit yaratishga xeshlash funksiyalarini ishlatish juda samarali hisoblanadi.Kalitlarning kriptobardoshliligini yanada oshirish maqsadida ushbu mexanizmga „asos“ vektori (salt) va iteratsiyalar sonini qoʻshish mumkin. „Asos“ vektori — tasodifiy ketma-ketlik boʻlib, parol bilan aralashtiriladi. „Asos“ vektorining qoʻllanilishi lugʻat hurujlarini qiyinlashtiradi, ushbu vektorning bugungi kunda tavfsiya etilgan uzunligi 8 bayt.[23] Iteratsiyalar soni — bu paroldan kalit yaratish almashtirish funksiyasining qatnashishlar soni. Agar almashtirish funksiyasi sifatida xeshlash funksiyasi ishtirok etsa u holda xeshlash funksiyasi iteratsiyalar soniga teng miqdorda ishtirok etadi. Bugungi kunda iteratsiyalar soni 1000 tadan kam boʻlmasligi zarur. Bu holatda joʻnatuvchi va qabul qiluvchi parollarni oldindan kelishib olishlari zarur. Keltirilgan kalit yaratish mexanizmi orqali foydalanuvchilar quyidagi sxemada koʻrsatilgan kabi maʼlumot almashadi: