يقدم XOR بإيجاز: XOR هي عملية بت قائم على الثنائي ، ويمثلها الرمز XOR أو ^. تتمثل الخوارزمية في استخدام نفس القيمة إلى 0 و 1 لكل جزء ثنائي من الرقم على جانبي المشغل.
الفهم البسيط هو إضافة دون حمل ، مثل 1+1 = 0 ، 0+0 = 0 ، 1+0 = 1.
وصف المتطلبات
يعد تشفير البيانات في عصر المعلومات موضوعًا مهمًا للغاية. أثناء عملية القيام بالمشروع ، قمت أيضًا بتطبيق خوارزمية تشفير معقدة نسبيًا. ومع ذلك ، نظرًا لأن التكنولوجيا المعنية سرية ، فقد قمت بتطبيق إصدار بسيط نسبيًا هنا ، باستخدام تدفقات إدخال الملفات والإخراج وعمليات XOR لتشفير الملفات التعسفية. فيما يتعلق بخوارزمية فك التشفير ، فهي بسيطة للغاية ويمكن حلها من خلال التفكير في ذلك بنفسك.
مبادئ الرياضيات
تستخدم خوارزمية التشفير هذه وظيفة رقمين XOR. دعنا نتحدث بإيجاز عن مبدأ Xor. XOR هو في الواقع عملية ترميز ثنائي لملف. ببساطة ، عندما تكون البتتين الثنائيتين متماثلين ، فهو 0 وليس 1 في نفس الوقت. انظر المثال التالي:
// التمثيل الثنائي من 7: 00000111 // التمثيل الثنائي من 2: 00000010 // النتيجة التي تم الحصول عليها بواسطة XOR لكلا: 00000101 // النتيجة التي تم الحصول عليها بواسطة الرقم 5//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
تنفيذ الكود
استيراد java.io.*؛ class filesecret {public static void main (string [] args) يلقي الاستثناء {// ابحث عن الملف المراد تشفيره ، حدد خطاب محرك الأقراص بنفسك ، ولا يلزم الإدخال والمخرجات في ملف محرك الأقراص نفسه (ملف محرك جديد = ملف محرك (ملف جديد: // الحرف: // ملف فك التشفير ") ؛ // قم بإنشاء قناة بيانات للسماح للبيانات الثنائية للصورة بالتدفق إلى ملفات FileInputStream = جديد fileInputStream (infile) ؛ FileOutputStream Output = new FileOutputStream (Outfile) ؛ // في عملية القراءة ، فإن بيانات القراءة XOR هي رقم. يجب إنشاء هذا الرقم بواسطة نوع من خوارزمية التشفير. أنا هنا ببساطة أقوم بتجميع رقم 928 (عيد ميلادي) ، ثم قم بتنفيذ محتوى البيانات int الحصري أو إخراج البيانات التي تم الحصول عليها = 0 ؛ // يتم استخدام هذا المتغير لتخزين بيانات القراءة. بالطبع ، يمكن استخدام أنواع البيانات الأطول مثل فترة طويلة هنا. بالطبع ، يمكننا أيضًا استخدام أنواع البيانات الأخرى. ما عليك سوى تلبية أنواع البيانات على طرفي ^ والتي يمكن تحويلها إلى بعضها البعض ، على الأقل يمكن إلقاؤها أثناء ((content = input.read ())! =-1) // إذا لم يتم الوصول إلى نهاية الملف ، فاستمر في قراءة البيانات ، وتم تخزين بيانات القراءة في متغير المحتوى. -1 هو الحرف النهائي للملف {output.write (المحتوى^928) ؛ // اكتب إلى دفق ملف الإخراج} // أغلق input.close () ؛ output.close () ؛}}تقييم وظيفة الكود
بالنسبة لهذا الرمز ، يمكن للوظيفة تلبية الاحتياجات بشكل أساسي ، ولكن هناك أوجه القصور. أولاً ، لا يتم استخدام خوارزمية التشفير لإنشاء الطرف الآخر من رقم XOR ، والثاني ، لم أقم بتطبيق فك تشفير الملف. في الواقع ، فإن فك التشفير بسيط للغاية. يرجى قراءة الجزء المبدأ الرياضي بعناية ويمكنك معرفة كيفية كتابة خوارزمية فك التشفير. في الواقع ، لا يتم تنفيذ التشفير وفك التشفير في نفس الوقت في نفس المكان ، ولكن يتم حساب التشفير باستخدام نفس خوارزمية التشفير.
تحسين الخوارزمية باستخدام أرقام عشوائية
في العملية أعلاه ، نستخدم بالفعل قيمة معينة لأداء XOR مع الملف الثنائي الذي نقرأه. هل يمكننا استخدام رقم عشوائي لاستبدال هذه الاتفاقية؟ الجواب نعم. بادئ ذي بدء ، نستخدم متغيرات النوع int لتخزينها. النطاق الذي يمكن تمثيله هو: Plus أو ناقص 2.1 مليار أرقام ممثلة. الرمز المحدد كما يلي:
// طرق إنشاء أرقام عشوائية استيراد java.util.*؛ الفئة العامة العشوائية {public static void main (string [] args) {random random = new Random () ؛ int num = random.nextint (11) ؛ // تشير إلى أنه يتم إنشاء رقم عشوائي بين 0-10. يجب أن نكون قادرين على حفظ الرقم العشوائي الذي تم إنشاؤه للتشفير وفك التشفير لاستخدام system.out.println ("الرقم العشوائي هو:"+num) ؛ }}تحسين خوارزمية التشفير
رمز التشفير:
استيراد java.io.*؛ استيراد java.util.*؛ class filesecret {public static void main (string [] args) يرمي الاستثناء {// ابحث = ملف جديد ("برنامج التشغيل: // ملف فك التشفير") ؛ // قم بإنشاء قناة بيانات للسماح للبيانات الثنائية للصورة بالتدفق إلى إدخال fileInputStream = جديد fileInputStream (infile) ؛ fileOutputStream Output = new FileOutputStream (outfile) ؛ تم إنشاؤه. يجب أن نكون قادرين على حفظ الرقم العشوائي الذي تم إنشاؤه للتشفير وفك التشفير لاستخدام system.out.println ("الرقم العشوائي هو:"+num) ؛ // في عملية القراءة ، ستكون بيانات القراءة Xor رقمًا ، والتي يجب إنشاءها بواسطة نوع من خوارزمية التشفير. أنا هنا ببساطة أقوم بتجميع رقم 928 (عيد ميلادي) ، ثم قم بإجراء XOR ، وإخراج محتوى البيانات التي تم الحصول عليها = 0 ؛ // يتم استخدام هذا المتغير لتخزين بيانات القراءة. بالطبع ، يمكن استخدام أنواع البيانات الأطول مثل فترة طويلة هنا. بالطبع ، يمكننا أيضًا استخدام أنواع البيانات الأخرى. نحتاج فقط إلى تلبية أنواع البيانات على طرفي ^ لتحويل بعضها البعض ، ويمكن تنفيذ تحويل نوع المصبوب على الأقل أثناء ((content = input.read ())! =-1) // إذا لم يتم الوصول إليه في نهاية الملف ، ثم تابع قراءة البيانات ، وتم تخزين بيانات القراءة في متغير المحتوى. -1 هو الحرف النهائي للملف {output.write (content^num) ؛ // اكتب إلى دفق ملف الإخراج} // أغلق input.close () ؛ output.close () ؛}}يحتاج جانب التشفير إلى إبلاغ جانب فك التشفير من Num الذي تم إنشاؤه في الكود أعلاه ، وإلا لا يمكن تنفيذ فك تشفير الملف.
رمز فك التشفير:
استيراد java.io.*؛ class filesecret {public static void main (string [] args) يلقي الاستثناء {// ابحث عن الملف المراد تشفيره ، حدد خطاب محرك الأقراص بنفسك ، ولا يلزم الإدخال والمخرجات في ملف محرك الأقراص نفسه (ملف محرك جديد = ملف محرك (ملف جديد: // الحرف: // ملف فك التشفير ") ؛ // قم بإنشاء قناة بيانات للسماح للبيانات الثنائية للصورة بالتدفق إلى ملفات FileInputStream = جديد fileInputStream (infile) ؛ FileOutputStream Output = new FileOutputStream (Outfile) ؛ // في عملية القراءة ، فإن بيانات القراءة XOR هي رقم. يجب إنشاء هذا الرقم بواسطة نوع من خوارزمية التشفير. أنا هنا ببساطة أقوم بتجميع رقم 928 (عيد ميلادي) ، ثم قم بتنفيذ محتوى البيانات int الحصري أو إخراج البيانات التي تم الحصول عليها = 0 ؛ // يتم استخدام هذا المتغير لتخزين بيانات القراءة. بالطبع ، يمكن استخدام أنواع البيانات الأطول مثل فترة طويلة هنا. بالطبع ، يمكننا أيضًا استخدام أنواع البيانات الأخرى. ما عليك سوى تلبية أنواع البيانات على طرفي ^ والتي يمكن تحويلها إلى بعضها البعض ، على الأقل يمكن إلقاؤها أثناء ((content = input.read ())! =-1) // إذا لم يتم الوصول إلى نهاية الملف ، فاستمر في قراءة البيانات ، وتم تخزين بيانات القراءة في متغير المحتوى. -1 هو الحرف النهائي للملف {output.write (المحتوى^ الرقم المشفر المنقولة من نهاية التشفير) ؛ // اكتب إلى دفق ملف الإخراج} // أغلق input.close () ؛ Output.Close () ؛}}تحسن مرة أخرى
في الواقع ، في الكود الخاص بنا ، يجب إنشاء رمز التشفير القياسي بشكل عشوائي ويحتوي على رموز مختلفة مثل الحروف والأرقام. فكيف ننشئ سلسلة التشفير هذه؟ كيف يمكنني تحويل سلسلة التشفير هذه إلى رمز ثنائي بعد إنشاءه؟ توفير فكرة: يمكن أن يؤدي استخدام تعبيرات Java العادية إلى إنشاء أي سلسلة تريدها ، ثم استخدم طريقة تحويل السلسلة لإنشاء الكود الثنائي المقابل. لقد قمت بتنفيذ طريقة توليد تشفير معقدة للغاية بنفسي ، لكن لا يمكن الكشف عنها. يتضمن ذلك معلومات المشاريع المختبرية ، وهناك العديد من مجالات التشفير والعديد من خوارزميات التشفير الكلاسيكية التي يمكن استخدامها أيضًا.
لخص
ما سبق هو كل محتوى هذه المقالة حول التفسير التفصيلي لمبدأ التشفير واستخدام أي ملف في عملية Java Xor. آمل أن يكون ذلك مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى هذا الموقع:
تستخدم Java عملية XOR لتنفيذ رمز مثيل خوارزمية التشفير والتشفير البسيط
مثال رمز تنفيذ برمجة Java على exor أو التشغيل على السلاسل السداسية
تحليل رمز مشكلة XOR في جافا
إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!