From e51a84c45f319364f832c5f2e616241d2346e458 Mon Sep 17 00:00:00 2001 From: Yasmeen Date: Mon, 19 Aug 2024 13:51:16 +0300 Subject: [PATCH] Add ar-AR translation to cryptography/hill-cipher --- .../cryptography/hill-cipher/README.ar-AR.md | 94 +++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 src/algorithms/cryptography/hill-cipher/README.ar-AR.md diff --git a/src/algorithms/cryptography/hill-cipher/README.ar-AR.md b/src/algorithms/cryptography/hill-cipher/README.ar-AR.md new file mode 100644 index 00000000..c7f15d3c --- /dev/null +++ b/src/algorithms/cryptography/hill-cipher/README.ar-AR.md @@ -0,0 +1,94 @@ +# شفرة هيل + +تعد **شفرة هيل** نوعًا من [شفرات الاستبدال متعددة الأحرف](https://en.wikipedia.org/wiki/Polygraphic_substitution) المبنية على الجبر الخطي. + +يتم تمثيل كل حرف برقم [بالنسبة لـ](https://en.wikipedia.org/wiki/Modular_arithmetic) `26`. على الرغم من أن هذه ليست ميزة أساسية للشفرة، إلا أن هذا المخطط البسيط غالبًا ما يُستخدم: + +| **Letter** | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | +| ---------- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| **Number** | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | + +## التشفير + +لتشفير رسالة، يتم ضرب كل مجموعة من `n` أحرف (تعتبر كمتجه ذو `n` مكون) في مصفوفة قابلة للعكس بأبعاد `n × n`، وذلك بالنسبة لـ `26`. + +المصفوفة المستخدمة للتشفير هي _مفتاح الشفرة_، ويجب اختيارها عشوائيًا من مجموعة المصفوفات القابلة للعكس بأبعاد `n × n` (بالنسبة لـ `26`). يمكن بالطبع تكييف الشفرة لأبجدية بأي عدد من الأحرف؛ فقط يجب إجراء جميع العمليات الحسابية بالنسبة لعدد الأحرف بدلاً من النسبة لـ `26`. + +لنأخذ الرسالة `ACT`، والمفتاح أدناه (أو `GYB/NQK/URP` بالأحرف): + +``` +| 6 24 1 | +| 13 16 10 | +| 20 17 15 | +``` + +بما أن `A` هو `0`، و `C` هو `2` و `T` هو `19`، فإن الرسالة هي المتجه: + +``` +| 0 | +| 2 | +| 19 | +``` + +وبالتالي، فإن المتجه المشفر يُعطى بـ: + +``` +| 6 24 1 | | 0 | | 67 | | 15 | +| 13 16 10 | | 2 | = | 222 | ≡ | 14 | (mod 26) +| 20 17 15 | | 19 | | 319 | | 7 | +``` + +الآن، لنفترض أن رسالتنا هي `CAT` بدلاً من ذلك (لاحظ كيف نستخدم نفس الأحرف كما في `ACT` هنا)، أو: + +``` +| 2 | +| 0 | +| 19 | +``` + +هذه المرة، المتجه المشفر يُعطى بـ: + +``` +| 6 24 1 | | 2 | | 31 | | 5 | +| 13 16 10 | | 0 | = | 216 | ≡ | 8 | (mod 26) +| 20 17 15 | | 19 | | 325 | | 13 | +``` + +وهو ما يقابل النص المشفر `FIN`. لقد تغير كل حرف. + +## فك التشفير + +لفك تشفير الرسالة، يتم ضرب كل مجموعة في معكوس المصفوفة المستخدمة للتشفير. نحول النص المشفر مرة أخرى إلى متجه، ثم نضرب ببساطة في معكوس مصفوفة المفتاح (`IFK/VIV/VMI` بالأحرف). (انظر [عكس المصفوفة](https://en.wikipedia.org/wiki/Matrix_inversion) للحصول على طرق حساب المصفوفة العكسية.) نجد أنه، بالنسبة لـ 26، معكوس المصفوفة المستخدمة في المثال السابق هو: + +``` + -1 +| 6 24 1 | | 8 5 10 | +| 13 16 10 | (mod 26) ≡ | 21 8 21 | +| 20 17 15 | | 21 12 8 | +``` + +باستخدام النص المشفر السابق `POH`، نحصل على: + +``` +| 8 5 10 | | 15 | | 260 | | 0 | +| 21 8 21 | | 14 | = | 574 | ≡ | 2 | (mod 26) +| 21 12 8 | | 7 | | 539 | | 19 | +``` + +وهو ما يعيدنا إلى `ACT`، كما هو متوقع. + +## تحديد مصفوفة التشفير + +هناك تعقيدان في اختيار مصفوفة التشفير: + +١. ليس لجميع المصفوفات معكوس. سيكون للمصفوفة معكوس إذا وفقط إذا كان [محددها](https://en.wikipedia.org/wiki/Determinant) غير صفري. + +٢. يجب ألا يكون لمحدد مصفوفة التشفير أي عوامل مشتركة مع الأساس المعياري. + +وبالتالي، إذا عملنا بالنسبة لـ `26` كما هو موضح أعلاه، يجب أن يكون المحدد غير صفري، ويجب ألا يكون قابلاً للقسمة على `2` أو `13`. إذا كان المحدد `0`، أو كان له عوامل مشتركة مع الأساس المعياري، فلا يمكن استخدام المصفوفة في شفرة هيل، ويجب اختيار مصفوفة أخرى (وإلا فلن يكون من الممكن فك التشفير). لحسن الحظ، المصفوفات التي تستوفي الشروط لاستخدامها في شفرة هيل شائعة نسبيًا. + +## المراجع + +- [شفرة هيل على ويكيبيديا](https://en.wikipedia.org/wiki/Hill_cipher) +- [عكس المصفوفة على MathIsFun](https://www.mathsisfun.com/algebra/matrix-inverse.html) +- [GeeksForGeeks](https://www.geeksforgeeks.org/hill-cipher/)