البرمجة

تشفير Caesar Cipher باستخدام char *

To fix the issue with your Caesar Cipher implementation using char *, you need to make a few adjustments. The main problem in your current implementation is that you are modifying the original Source array directly, which is not what you want. Instead, you should create a new char * array for the encrypted text and then modify it. Here’s an updated version of your Encrypt function:

cpp
char * Encrypt(const char * Source, int Key) { int length = strlen(Source); char * Crypted = new char[length + 1]; // +1 for null terminator for(int Current = 0; Current < length; Current++) Crypted[Current] = Source[Current] + Key; Crypted[length] = '\0'; // null-terminate the string return Crypted; }

In this version, we create a new char * array Crypted of the same length as the Source string (plus one for the null terminator). Then, we iterate over each character in the Source string, add the Key to it, and store the result in the Crypted array. Finally, we null-terminate the Crypted array before returning it.

Remember to free the memory allocated for Crypted after you’re done using it to avoid memory leaks.

المزيد من المعلومات

لديك الآن وظيفة تشفير بسيطة تعمل مع الـ char * وتستخدم معمولية الـ Caesar Cipher. ومع ذلك، هناك بعض النقاط التي يجب مراعاتها:

  1. تحرير الذاكرة: يجب عليك تحرير الذاكرة المخصصة للنص المشفر بعد الانتهاء من استخدامها لتجنب تسريب الذاكرة.

  2. التعامل مع الحروف الصغيرة والكبيرة: في تشفير Caesar Cipher، يجب عليك التعامل مع الحروف الكبيرة والصغيرة بشكل منفصل. على سبيل المثال، عندما تضيف المفتاح إلى حرف صغير، يجب عليك التأكد من أن النتيجة لا تتجاوز نطاق الحروف الصغيرة (97-122 في ASCII).

  3. التحقق من الحروف الأبجدية: يمكنك تجاهل أي حرف غير أبجدي (مثل الفواصل والأرقام والرموز) وتركها كما هي دون تغيير.

  4. العودة إلى الحرف الأصلي: عند فك تشفير Caesar Cipher، يجب عليك تقليل قيمة المفتاح من الحرف المشفر للعودة إلى الحرف الأصلي.

  5. تحسين الأداء: بالنسبة لنصوص طويلة، يمكنك تحسين الأداء عن طريق تحسين الخوارزمية، على سبيل المثال، بدلاً من تشفير كل حرف بشكل منفصل، يمكنك تشفير النص بأكمله في دفعة واحدة.

  6. التعامل مع حالة نهاية النص: تأكد من التعامل مع حالة نهاية النص (نهاية السلسلة) بشكل صحيح، عن طريق إضافة الحرف النهائي المناسب (null terminator) إلى النص المشفر.

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

زر الذهاب إلى الأعلى