EVP_BYTESTOKEY(3SSL)

الاسم
EVP_BytesToKey - دالة تعمية معتمدة على كلمة السر

موجز
 #include <openssl/evp.h>

 int EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md,
                    const unsigned char *salt,
                    const unsigned char *data, int datal, int count,
                    unsigned char *key, unsigned char *iv);

الوصف
EVP_BytesToKey() تستخرج مفتاحًا ومتجه تهيئة من معاملات متنوعة. type هو المُعمِّي الذي يُستخرج له المفتاح ومتجه التهيئة. md هو ملخص الرسالة المستخدم. يُستخدم المعامل salt كملح في الاستخراج: يجب أن يشير إلى مخزن مؤقت بحجم 8 بايت أو NULL إذا لم يُستخدم ملح. data هو مخزن مؤقت يحتوي على datal بايت يُستخدم لاستخراج بيانات المفاتيح. count هو عدد التكرارات المستخدمة. يُكتب المفتاح ومتجه التهيئة المستخرجان إلى key و iv على التوالي.

ملاحظات
تطبيق نموذجي لهذه الدالة هو استخراج مواد مفاتيح لخوارزمية تعمية من كلمة سر في المعامل data.

زيادة المعامل count تُبطئ الخوارزمية مما يُصعّب على المهاجم تنفيذ هجوم القوة العمياء باستخدام عدد كبير من كلمات السر المرشحة.

إذا كان الطول الإجمالي للمفتاح ومتجه التهيئة أقل من طول الملخص وMD5 مستخدم، فإن خوارزمية الاستخراج متوافقة مع PKCS#5 v1.5، وإلا يُستخدم امتداد غير قياسي لاستخراج البيانات الإضافية.

يجب على التطبيقات الأحدث استخدام خوارزمية أكثر حداثة مثل PBKDF2 كما هو معرف في PKCS#5v2.1 والمقدم بواسطة PKCS5_PBKDF2_HMAC.

خوارزمية استخراج المفتاح
يُستخرج المفتاح ومتجه التهيئة بدمج D_1, D_2, إلخ حتى تتوفر بيانات كافية للمفتاح ومتجه التهيئة. يُعرف D_i كالتالي:

        D_i = HASH^count(D_(i-1) || data || salt)

حيث || يرمز إلى الدمج، D_0 فارغ، HASH هي خوارزمية الملخص المستخدمة، HASH^1(data) هي ببساطة HASH(data)، HASH^2(data) هي HASH(HASH(data)) وهكذا.

تُستخدم البايتات الأولية للمفتاح والبايتات التالية لمتجه التهيئة.

القيم المُرجعة
إذا كان data هو NULL، فإن EVP_BytesToKey() تُرجع عدد البايتات اللازمة لتخزين المفتاح المستخرج. وإلا، تُرجع EVP_BytesToKey() حجم المفتاح المستخرج بالبايت، أو 0 عند حدوث خطأ.

انظر أيضًا
evp(7), RAND_bytes(3), PKCS5_PBKDF2_HMAC(3), EVP_EncryptInit(3)

حقوق النسخ
حقوق النشر 2001-2016 لمؤلفي مشروع OpenSSL. جميع الحقوق محفوظة.

مرخص بموجب رخصة Apache 2.0 (المشار إليها فيما يلي بـ ”الرخصة“). لا يجوز لك استخدام هذا الملف إلا وفقًا لشروط الرخصة. يمكنك الحصول على نسخة منها في الملف LICENSE الموجود في حزمة التوزيع المصدرية أو على الرابط <https://www.openssl.org/source/license.html>.

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.