أنشئ تطبيقًا لـشيفرة فيجينير. شيفرة فيجينير شيفرة استبدالية بسيطة.
الشيفرة خوارزمية تُستخدم لتشفير سلسلة نصية أو ترميزها. تُسمّى السلسلة النصية غير المشفّرة النص الأصلي، وتُسمّى السلسلة النصية المشفّرة النص المشفّر. يُسمّى تحويل النص الأصلي إلى النص المشفّر ترميزًا، بينما يُسمّى العكس فك الترميز.
في الشيفرة الاستبدالية، يُستبدل كل حرف من النص الأصلي بحرف من النص المشفّر يُحسب بمساعدة مفتاح. (لاحظ أنه من الممكن أن يكون الحرف البديل مماثلًا للحرف الأصلي.)
في هذه الشيفرة، المفتاح سلسلة من الحروف الصغيرة، مثل "abcd".
يُزاح كل حرف من النص الأصلي أو يُدار بمقدار يعتمد على الحرف المقابل له في المفتاح.
الحرف "a" في المفتاح يعني إزاحة مقدارها 0 (أي دون إزاحة).
الحرف "b" في المفتاح يعني إزاحة مقدارها 1.
الحرف "c" في المفتاح يعني إزاحة مقدارها 2، وهكذا.
يستخدم الحرف الأول من النص الأصلي الحرف الأول من المفتاح، ويستخدم الحرف الثاني من النص الأصلي الحرف الثاني من المفتاح، وهكذا. إذا نفدت حروف المفتاح قبل أن تنفد حروف النص الأصلي، فابدأ من بداية المفتاح مرة أخرى.
إذا كان المفتاح يحتوي على حرف واحد فقط، مثل "dddddd"، فإن جميع حروف النص الأصلي تُزاح بالمقدار نفسه (ثلاثة في هذا المثال)، ما يجعلها مماثلة لشيفرة التدوير أو شيفرة الإزاحة (وتُسمّى أحيانًا شيفرة قيصر).
على سبيل المثال، سيصبح النص الأصلي "iamapandabear" هو "ldpdsdqgdehdu".
إذا كان المفتاح يحتوي على الحرف "a" فقط (مرة واحدة أو أكثر)، فإن مسافة الإزاحة تساوي صفرًا، ويكون النص المشفّر مماثلًا للنص الأصلي.
مع ذلك، عادةً ما يكون المفتاح أكثر تعقيدًا من ذلك!
إذا كان المفتاح "abcd"، فستُزاح حروف النص الأصلي بمسافات مقدارها 0 و1 و2 و3.
إذا كان النص الأصلي "hello"، فإننا نحتاج إلى 5 إزاحات، لذا سيلتف المفتاح حول نفسه، ما يعطي مسافات إزاحة مقدارها 0 و1 و2 و3 و0.
وبتطبيق تلك الإزاحات على حروف "hello" نحصل على "hfnoo".
إذا لم يُقدَّم أي مفتاح، فأنشئ مفتاحًا يتكون من 100 حرف صغير عشوائي على الأقل من الأبجدية اللاتينية.
سجّل في Exercism لتتعلّم وتتقن PHP عبر 11 مفهومًا122 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.