OPENSSL-ENC(1ssl) OpenSSL OPENSSL-ENC(1ssl)

الاسم

openssl-enc - روتينات التعمية المتناظرة

موجز

openssl enc|تعمية [-تعمية] [-help] [-list] [-ciphers] [-in اسم_الملف] [-out اسم_الملف] [-pass معطى] [-e] [-d] [-a] [-base64] [-A] [-k كلمة_السر] [-kfile اسم_الملف] [-K مفتاح] [-iv IV] [-S ملح] [-salt] [-nosalt] [-z] [-md ملخص] [-iter عدد] [-pbkdf2] [-saltlen حجم] [-p] [-P] [-bufsize رقم] [-nopad] [-v] [-debug] [-none] [-skeymgmt skeymgmt] [-skeyopt خيار:قيمة] [-engine معرف] [-rand ملفات] [-writerand ملف] [-provider اسم] [-provider-path مسار] [-provparam [اسم:]مفتاح=قيمة] [-propquery propq]

openssl تعمية [...]

الوصف

تسمح أوامر التعمية المتناظرة بتعمية البيانات أو فك تعميتها باستخدام خوارزميات تعمية كتلية أو انسيابية متنوعة باستخدام مفاتيح مبنية على كلمات سر أو مقدمة صراحة. يمكن أيضًا تنفيذ ترميز أو فك ترميز Base64 إما بمفرده أو بالإضافة إلى التعمية أو فك التعمية.

الخيارات

-تعمية
خوارزمية التعمية المراد استخدامها.
اطبع رسالة الاستخدام.
اسرد جميع خوارزميات التعمية المدعومة.
اسم مستعار لـ -list لعرض جميع خوارزميات التعمية المدعومة.
اسم ملف المدخلات، المدخلات القياسية مبدئيًا.
اسم ملف المخرجات، المخرجات القياسية مبدئيًا.
مصدر كلمة السر. لمزيد من المعلومات حول تنسيق المعطى انظر openssl-passphrase-options(1).
عمِّ البيانات المدخلة: هذا هو الخيار المبدئي.
فك تعمية البيانات المدخلة.
عالج البيانات بترميز Base64. هذا يعني أنه إذا كانت التعمية جارية، فسيتم ترميز البيانات بـ base64 بعد التعمية. وإذا ضُبط فك التعمية، فسيتم فك ترميز البيانات المدخلة من base64 قبل فك تعميتها.

عند عدم توفير الخيار -A، يُدرج سطر جديد بعد كل 64 محرفًا عند الترميز، ويُتوقع وجود سطر جديد ضمن أول 1024 بايت من المدخلات عند فك الترميز.

مثل -a
إذا ضُبط الخيار -a، فإن ترميز base64 ينتج مخرجات بدون أي محرف سطر جديد، وفك ترميز base64 لا يتطلب أي أسطر جديدة. لذا قد يكون من المفيد استخدام الخيار -A عند فك ترميز مدخلات مجهولة.
كلمة السر التي سيُشتق منها المفتاح. هذا من أجل التوافق مع إصدارات OpenSSL السابقة. حل محلها معامل -pass.
اقرأ كلمة السر التي سيُشتق منها المفتاح من السطر الأول من اسم_الملف. هذا من أجل التوافق مع إصدارات OpenSSL السابقة. حل محلها معامل -pass.
استخدم الملخص المحدد لإنشاء المفتاح من عبارة المرور. خوارزمية المبدئية هي sha-256.
استخدم عددًا معينًا من التكرارات على كلمة السر في اشتقاق مفتاح التعمية. تزيد القيم العالية من الوقت المطلوب للهجوم بالقوة الغاشمة على الملف الناتج. يُمكن هذا الخيار استخدام خوارزمية PBKDF2 لاشتقاق المفتاح.
استخدم خوارزمية PBKDF2 مع عدد تكرار مبدئي يبلغ 10000 ما لم يُحدد خلاف ذلك عبر خيار سطر الأوامر -iter.
اضبط طول الملح المراد استخدامه عند استخدام خيار -pbkdf2. لأسباب تتعلق بالتوافق، القيمة المبدئية هي 8 بايتات. القيمة القصوى حاليًا هي 16 بايتًا. إذا لم يُستخدم الخيار -pbkdf2، فسيتم تجاهل هذا الخيار واستخدام طول ملح ثابت قدره 8. يجب أيضًا استخدام طول الملح المستخدم عند التعمية عند فك التعمية.
لا تستخدم الملح في روتينات اشتقاق المفاتيح. ينبغي ألا يُستخدم هذا الخيار إلا لأغراض الاختبار أو التوافق مع النسخ القديمة جدًا من OpenSSL.
استخدم الملح (يُولد عشوائيًا أو يُوفر عبر الخيار -S) عند التعمية، هذا هو الخيار المبدئي.
المتح الفعلي المراد استخدامه: يجب أن يُتمثل كسلسلة من أرقام ست عشرية. إذا استُخدم هذا الخيار أثناء التعمية، فستكون هناك حاجة إلى القيمة ذاتها مرة أخرى أثناء فك التعمية. قد يُقص هذا الملح أو يُحشى بالأصفار لمطابقة طول الملح (انظر -saltlen).
المفتاح الفعلي المراد استخدامه: يجب أن يُتمثل كسلسلة تتكون فقط من أرقام ست عشرية. إذا حُدد المفتاح فقط، فيجب بالإضافة إلى ذلك تحديد IV باستخدام الخيار -iv. عندما يتم تحديد كل من المفتاح وكلمة السر، سيُستخدم المفتاح المعطى مع الخيار -K وسيُؤخذ الـ IV المولد من كلمة السر. ليس من المنطقي تحديد كل من المفتاح وكلمة السر.
الـ IV الفعلي المراد استخدامه: يجب أن يُتمثل كسلسلة تتكون فقط من أرقام ست عشرية. عندما يُحدد المفتاح فقط باستخدام الخيار -K، يجب تعريف IV صراحة. عندما تُحدد كلمة سر باستخدام أحد الخيارات الأخرى، يُولد الـ IV من كلمة السر هذه.
اطبع المفتاح و الـ IV المستخدمين.
اطبع المفتاح و الـ IV المستخدمين ثم اخرج فورًا: لا تقم بأي تعمية أو فك تعمية.
اضبط حجم المخزن المؤقت للإدخال والإخراج.
عطّل حشوة الكتل القياسية.
طباعة مسهبة؛ اعرض بعض الإحصائيات حول الإدخال والإخراج وأحجام المخازن المؤقتة.
نقّح الـ BIOs المستخدمة للإدخال والإخراج.
اضغط أو فك ضغط البيانات المعماة باستخدام zlib بعد التعمية أو قبل فك التعمية. هذا الخيار موجود فقط إذا كان OpenSSL قد صُرف مع خيار zlib أو zlib-dynamic.
استخدم تعمية NULL (لا تعمية ولا فك تعمية للمدخلات).
قد يدعم بعض المزودين كائنات المفاتيح المتناظرة غير الشفافة. لاستخدامها، نحتاج لمعرفة اسم EVP_SKEYMGMT المراد استخدامه. إذا لم يُحدد، سيُستخدم اسم خوارزمية التعمية.

لمعرفة اسم إدارة المفاتيح المتناظرة المناسبة، يرجى الرجوع إلى مخرجات الأمر "openssl list -skey-managers".

للحصول على مفتاح متناظر غير شفاف موجود أو لتوليد مفتاح جديد، تُحدد خيارات المفتاح كـ opt:value. لا يمكن استخدام هذه الخيارات مع أي خيارات تلمح لمفتاح خام بشكل مباشر أو غير مباشر.
انظر "خيارات الحالة العشوائية" في openssl(1) لمزيد من التفاصيل.
انظر "خيارات المزود" في openssl(1)، و provider(7)، و property(7).
انظر "خيارات المحرك" في openssl(1). هذا الخيار مهجور.

ملاحظات

يمكن استدعاء البرنامج إما كـ "openssl تعمية" أو "openssl enc -تعمية". الشكل الأول لا يعمل مع خوارزميات التعمية التي توفرها المحركات، لأن هذا الشكل يُعالج قبل قراءة ملف الإعداد وقبل تحميل أي محركات. استخدم أمر openssl-list(1) للحصول على قائمة بخوارزميات التعمية المدعومة.

المحركات التي توفر خوارزميات تعمية جديدة تمامًا (مثل محرك ccgost الذي يوفر خوارزمية gost89) ينبغي ضبطها في ملف الإعداد. المحركات المحددة في سطر الأوامر باستخدام خيار -engine يمكن استخدامها فقط للتطبيقات المدعومة عتاديًا لخوارزميات التعمية المدعومة من قبل لب OpenSSL أو محرك آخر محدد في ملف الإعداد.

عندما يسرد أمر enc خوارزميات التعمية المدعومة، تُسرد أيضًا خوارزميات التعمية التي توفرها المحركات المحددة في ملفات الإعداد.

سيُطلب إدخال كلمة سر لاشتقاق المفتاح و الـ IV إذا لزم الأمر.

ينبغي دائمًا استخدام خيار -salt إذا كان المفتاح يُشتق من كلمة سر، ما لم ترد التوافق مع إصدارات OpenSSL السابقة.

بدون خيار -salt، من الممكن إجراء هجمات قاموس فعالة على كلمة السر ومهاجمة البيانات المعماة بخوارزمية تعمية انسيابية. والسبب في ذلك هو أنه بدون الملح، تولد نفس كلمة السر دائمًا نفس مفتاح التعمية.

عندما يُولد الملح عشوائيًا (وهذا يعني عند التعمية باستخدام عبارة مرور دون إعطاء ملح صريح باستخدام الخيار -S)، تُحجز البايتات الأولى من البيانات المعماة لتخزين الملح لفك التعمية لاحقًا.

بعض خوارزميات التعمية لا تملك مفاتيح كبيرة وأخرى لها تبعات أمنية إذا لم تُستخدم بشكل صحيح. يُنصح المبتدئ باستخدام خوارزمية تعمية كتلية قوية، مثل AES، في وضع CBC.

تستخدم جميع خوارزميات التعمية الكتلية عادةً حشوة PKCS#7، المعروفة أيضًا باسم حشوة الكتل القياسية. يسمح هذا بإجراء فحص أولي لسلامة البيانات أو كلمة السر. ومع ذلك، وبما أن فرصة اجتياز البيانات العشوائية للاختبار أكبر من 1 من 256، فإنه ليس اختبارًا جيدًا جدًا.

إذا عُطلت الحشوة، فيجب أن تكون البيانات المدخلة من مضاعفات طول كتلة خوارزمية التعمية.

جميع خوارزميات RC2 تملك نفس طول المفتاح وطول المفتاح الفعال.

تستخدم خوارزميات Blowfish و RC5 مفتاحًا بطول 128 بت.

يرجى ملاحظة أن OpenSSL 3.0 غير تأثير الخيار -S. أي قيمة ملح صريحة تُحدد عبر هذا الخيار لم تعد تُلحق ببداية النص المعمى عند التعمية، ويجب توفيرها صراحة مرة أخرى عند فك التعمية. وبالعكس، عندما يُستخدم الخيار -S أثناء فك التعمية، يُتوقع ألا يحتوي النص المعمى على قيمة ملح في بدايته.

عند استخدام OpenSSL 3.0 أو أحدث لفك تعمية بيانات عُميت بملح صريح تحت OpenSSL 1.1.1 لا تستخدم الخيار -S، حيث سيُقرأ الملح حينها من النص المعمى. لتوليد نص معمى يمكن فك تعميته بـ OpenSSL 1.1.1 لا تستخدم الخيار -S، حيث سيُولد الملح حينها عشوائيًا ويُلحق ببداية المخرجات.

خوارزميات التعمية المدعومة

لاحظ أن بعض خوارزميات التعمية هذه يمكن تعطيلها وقت التصريف وبعضها متاح فقط إذا ضُبط محرك مناسب في ملف الإعداد. المخرجات عند استدعاء هذا الأمر مع خيار -list (أي "openssl enc -list") هي قائمة بخوارزميات التعمية المدعومة من قبل نسختك من OpenSSL، بما في ذلك تلك التي توفرها المحركات المضبوطة.

لا يدعم هذا الأمر أوضاع التعمية المستوثقة مثل CCM و GCM، ولن يدعم مثل هذه الأوضاع في المستقبل. وذلك بسبب الاضطرار للبدء بانسياب المخرجات (على سبيل المثال، إلى المخرجات القياسية عندما لا يُستخدم -out) قبل أن يمكن التحقق من وسم الاستيثاق. عندما يُستخدم هذا الأمر في أنبوب، لن يتمكن الطرف المتلقي من التراجع عند فشل الاستيثاق. أوضاع AEAD المستخدمة حاليًا بشكل شائع تعاني أيضًا من فشل ذريع في السرية و/أو السلامة عند إعادة استخدام المفتاح/iv/المنوع (nonce)، وبما أن openssl enc يلقي بعبء إدارة المفتاح/iv/المنوع بالكامل على المستخدم، فإن خطر تعريض أوضاع AEAD كبير جدًا بحيث لا يمكن السماح به. تؤثر قضايا إدارة المفتاح/iv/المنوع هذه أيضًا على الأوضاع الأخرى المعروضة حاليًا في هذا الأمر، لكن أوضاع الفشل تكون أقل حدة في هذه الحالات، ولا يمكن إزالة هذه الوظيفة في فرع إصدار مستقر. للتعمية الكبيرة للبيانات، سواء باستخدام أوضاع التعمية المستوثقة أو أوضاع أخرى، يُنصح بـ openssl-cms(1)، حيث إنه يوفر تنسيق بيانات قياسيًا ويؤدي إدارة المفتاح/iv/المنوع المطلوبة.

عند استخدام enc مع أوضاع غلاف المفاتيح (key wrapping)، لا يمكن انسياب البيانات المدخلة، مما يعني أنها يجب أن تُعالج في تمريرة واحدة. وبالتالي، يجب أن يكون حجم البيانات المدخلة أقل من حجم المخزن المؤقت (-bufsize معطى، المبدئي هو 8*1024 بايت). تتطلب خوارزميات '*-wrap' أن تكون المدخلات من مضاعفات الـ 8 بايت، لعدم وجود حشوة. تسمح خوارزميات '*-wrap-pad' بأي طول للمدخلات. في كلتا الحالتين، لا حاجة لـ IV. انظر المثال أدناه.

base64             Base 64
bf-cbc             Blowfish في وضع CBC
bf                 اسم مستعار لـ bf-cbc
blowfish           اسم مستعار لـ bf-cbc
bf-cfb             Blowfish في وضع CFB
bf-ecb             Blowfish في وضع ECB
bf-ofb             Blowfish في وضع OFB
cast-cbc           CAST في وضع CBC
cast               اسم مستعار لـ cast-cbc
cast5-cbc          CAST5 في وضع CBC
cast5-cfb          CAST5 في وضع CFB
cast5-ecb          CAST5 في وضع ECB
cast5-ofb          CAST5 في وضع OFB
chacha20           خوارزمية ChaCha20
des-cbc            DES في وضع CBC
des                اسم مستعار لـ des-cbc
des-cfb            DES في وضع CFB
des-ofb            DES في وضع OFB
des-ecb            DES في وضع ECB
des-ede-cbc        Two key triple DES EDE في وضع CBC
des-ede            Two key triple DES EDE في وضع ECB
des-ede-cfb        Two key triple DES EDE في وضع CFB
des-ede-ofb        Two key triple DES EDE في وضع OFB
des-ede3-cbc       Three key triple DES EDE في وضع CBC
des-ede3           Three key triple DES EDE في وضع ECB
des3               اسم مستعار لـ des-ede3-cbc
des-ede3-cfb       Three key triple DES EDE في وضع CFB
des-ede3-ofb       Three key triple DES EDE في وضع OFB
desx               خوارزمية DESX.
gost89             GOST 28147-89 في وضع CFB (يوفرها محرك ccgost)
gost89-cnt         GOST 28147-89 في وضع CNT (يوفرها محرك ccgost)
idea-cbc           خوارزمية IDEA في وضع CBC
idea               نفس idea-cbc
idea-cfb           IDEA في وضع CFB
idea-ecb           IDEA في وضع ECB
idea-ofb           IDEA في وضع OFB
rc2-cbc            128 بت RC2 في وضع CBC
rc2                اسم مستعار لـ rc2-cbc
rc2-cfb            128 بت RC2 في وضع CFB
rc2-ecb            128 بت RC2 في وضع ECB
rc2-ofb            128 بت RC2 في وضع OFB
rc2-64-cbc         64 بت RC2 في وضع CBC
rc2-40-cbc         40 بت RC2 في وضع CBC
rc4                128 بت RC4
rc4-64             64 بت RC4
rc4-40             40 بت RC4
rc5-cbc            تعمية RC5 في وضع CBC
rc5                اسم مستعار لـ rc5-cbc
rc5-cfb            تعمية RC5 في وضع CFB
rc5-ecb            تعمية RC5 في وضع ECB
rc5-ofb            تعمية RC5 في وضع OFB
seed-cbc           تعمية SEED في وضع CBC
seed               اسم مستعار لـ seed-cbc
seed-cfb           تعمية SEED في وضع CFB
seed-ecb           تعمية SEED في وضع ECB
seed-ofb           تعمية SEED في وضع OFB
sm4-cbc            تعمية SM4 في وضع CBC
sm4                اسم مستعار لـ sm4-cbc
sm4-cfb            تعمية SM4 في وضع CFB
sm4-ctr            تعمية SM4 في وضع CTR
sm4-ecb            تعمية SM4 في وضع ECB
sm4-ofb            تعمية SM4 في وضع OFB
aes-[128|192|256]-cbc  128/192/256 بت AES في وضع CBC
aes[128|192|256]       اسم مستعار لـ aes-[128|192|256]-cbc
aes-[128|192|256]-cfb  128/192/256 بت AES في وضع 128 بت CFB
aes-[128|192|256]-cfb1 128/192/256 بت AES في وضع 1 بت CFB
aes-[128|192|256]-cfb8 128/192/256 بت AES في وضع 8 بت CFB
aes-[128|192|256]-ctr  128/192/256 بت AES في وضع CTR
aes-[128|192|256]-ecb  128/192/256 بت AES في وضع ECB
aes-[128|192|256]-ofb  128/192/256 بت AES في وضع OFB
aes-[128|192|256]-wrap     غلاف المفاتيح باستخدام 128/192/256 بت AES
aes-[128|192|256]-wrap-pad غلاف المفاتيح مع حشوة باستخدام 128/192/256 بت AES
aria-[128|192|256]-cbc  128/192/256 بت ARIA في وضع CBC
aria[128|192|256]       اسم مستعار لـ aria-[128|192|256]-cbc
aria-[128|192|256]-cfb  128/192/256 بت ARIA في وضع 128 بت CFB
aria-[128|192|256]-cfb1 128/192/256 بت ARIA في وضع 1 بت CFB
aria-[128|192|256]-cfb8 128/192/256 بت ARIA في وضع 8 بت CFB
aria-[128|192|256]-ctr  128/192/256 بت ARIA في وضع CTR
aria-[128|192|256]-ecb  128/192/256 بت ARIA في وضع ECB
aria-[128|192|256]-ofb  128/192/256 بت ARIA في وضع OFB
camellia-[128|192|256]-cbc  128/192/256 بت Camellia في وضع CBC
camellia[128|192|256]       اسم مستعار لـ camellia-[128|192|256]-cbc
camellia-[128|192|256]-cfb  128/192/256 بت Camellia في وضع 128 بت CFB
camellia-[128|192|256]-cfb1 128/192/256 بت Camellia في وضع 1 بت CFB
camellia-[128|192|256]-cfb8 128/192/256 بت Camellia في وضع 8 بت CFB
camellia-[128|192|256]-ctr  128/192/256 بت Camellia في وضع CTR
camellia-[128|192|256]-ecb  128/192/256 بت Camellia في وضع ECB
camellia-[128|192|256]-ofb  128/192/256 بت Camellia في وضع OFB

أمثلة

فقط رمز ملفًا ثنائيًا بـ base64:

openssl base64 -in file.bin -out file.b64

فك ترميز الملف ذاته

openssl base64 -d -in file.b64 -out file.bin

عمِّ ملفًا باستخدام AES-128 مستخدمًا كلمة سر يُطلب إدخالها واشتقاق مفتاح PBKDF2:

openssl enc -aes128 -pbkdf2 -in file.txt -out file.aes128

فك تعمية ملف باستخدام كلمة سر مقدمة:

openssl enc -aes128 -pbkdf2 -d -in file.aes128 -out file.txt \
   -pass pass:<كلمة_السر>

عمِّ ملفًا ثم رمزه بـ base64 (ليمكن إرساله عبر البريد مثلاً) باستخدام AES-256 في وضع CTR واشتقاق مفتاح PBKDF2:

openssl enc -aes-256-ctr -pbkdf2 -a -in file.txt -out file.aes256

فك ترميز base64 لملف ثم فك تعميته باستخدام كلمة سر مقدمة في ملف:

openssl enc -aes-256-ctr -pbkdf2 -d -a -in file.aes256 -out file.txt \
   -pass file:<ملف_كلمة_السر>

غلاف مفاتيح AES:

 openssl enc -e -a -id-aes128-wrap-pad -K 000102030405060708090A0B0C0D0E0F -in file.bin
أو
 openssl aes128-wrap-pad -e -a -K 000102030405060708090A0B0C0D0E0F -in file.bin

العلل

الخيار -A عند استخدامه مع ملفات كبيرة لا يعمل بشكل صحيح. من ناحية أخرى، عند فك ترميز base64 بدون الخيار -A، إذا لم تتضمن أول 1024 بايت من المدخلات محرف سطر جديد، فسيتم تجاهل أول سطرين من المدخلات.

أمر openssl enc يدعم فقط عددًا ثابتًا من الخوارزميات مع معاملات معينة. لذا إذا كنت تريد، على سبيل المثال، استخدام RC2 بمفتاح 76 بت أو RC4 بمفتاح 84 بت فلا يمكنك استخدام هذا البرنامج.

انظر أيضًا

openssl-list(1)، و EVP_SKEY(3)

التاريخ

غُيّر الملخص المبدئي من MD5 إلى SHA256 في OpenSSL 1.1.0.

أُضيف الخيار -list في OpenSSL 1.1.1e.

هُجر الخياران -ciphers و -engine في OpenSSL 3.0.

أُضيف الخيار -saltlen في OpenSSL 3.2.

أُضيف الخياران -skeymgmt و -skeyopt في OpenSSL 3.5.

حقوق النسخ

حقوق النشر 2000-2025 لمؤلفي مشروع OpenSSL. جميع الحقوق محفوظة.

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

ترجمة

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

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

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

7 أبريل 2026 3.6.2