تشفير البيانات للاتصال بين أجهزة إنترنت الأشياء (ممثلة عبر Lora).
حذر
يرجى ملاحظة أن الكود والمواد الواردة في هذا المستودع مخصصة للأغراض التعليمية فقط وليست آمنة لاستخدامها في الإنتاج.
ملحوظة
مجموعة Dev التي سنستخدمها في هذا المشروع هي Arduino Uno ، مع Ebyte E32-433T20D في هذا المشروع.
خلفية
الخوارزمية التي تستخدم في هذا المشروع
المساهمين
في عالم إنترنت الأشياء (IoT) ، يعد التواصل الآمن بين الأجهزة أمرًا بالغ الأهمية. توفر تقنية Lora (طويلة المدى) حلاً قويًا للاتصالات طويلة المدى منخفض الطاقة ، مما يجعلها مثالية لتطبيقات إنترنت الأشياء. ومع ذلك ، فإن القيود المتأصلة في LORA ، مثل انخفاض معدلات البيانات وأحجام الحمولة المحدودة ، تتطلب استخدام خوارزميات التشفير الخفيفة لضمان أمان البيانات دون المساس بالأداء.
يهدف هذا المشروع إلى تنفيذ وتوضيح تقنيات تشفير البيانات المناسبة لتواصل Lora. لقد اخترنا خوارزميات تشفير كلاسيكيين ، و Ciesar Cipher و Vigenère Cipher ، بسبب بساطتها وكفاءتها. توفر هذه الخوارزميات مستوى أساسيًا من الأمان ، مما يجعلها مناسبة للأغراض التعليمية والتطبيقات الخفيفة الوزن حيث تشكل قيود الموارد مصدر قلق.
تشفير قيصر هو تشفير بديل حيث يتم تحويل كل حرف في النص العادي عددًا معينًا من الأماكن لأسفل أو أعلى الأبجدية. من ناحية أخرى ، يعد Vigenère Cipher مشفرًا أكثر تعقيدًا من البديل بين Polyalphabetic يستخدم كلمة رئيسية لتحديد التحول لكل حرف في النص العادي. يتم تنفيذ كلا الخوارزميات في هذا المشروع لعرض عمليات تشفيرها وفك التشفير.
نظرًا للحد من انتقال Lora ، والحد من الوقت ، والحاجة إلى خوارزمية تشفير خفيفة الوزن ، نختار استخدام Caesar Cipher وخوارزمية تشفير Vigenère.
git clone https://github.com/l1ttled1no/LoRaEncryptionملحوظة
يمكن تعديل التحول في Caesar Cipher في ملف Main.cpp. يمكن تعديل المفتاح في تشفير Vigenère في ملف main.cpp.
أولاً ، قم ببناء المنافسة الرئيسية:
g++ -Ilib -o main main.cpp src/ * .cppثم ، قم بتشغيل القابل للتنفيذ مع المعلمات:
./main [input_string]على سبيل المثال:
> ./main hello world
Input: hello world
--------------Caesar Algorithm--------------
Original text: hello world
Encrypted text: rovvy*"y|vn
Decrypted text: hello world
--------------Vigenere Algorithm--------------
Original text: hello world
Encrypted text: Uvaae!aQ
Decrypted text: hello world
>
ملحوظة
يمكن أن تحتوي السلسلة على مسافات وأحرف خاصة ، ضمن نطاق ASCII من 32 إلى 126.
@l1ttled1no (المساهم الرئيسي).