عملگر بیتی xor یک گیت منطقی است.
همان طور که گفتیم یک عملگر بیتی است و در سطح بیت کار میکند عملکرد ان بدین شکل است
1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0
عملگر XOR مخفف Exclusive or میباشد و در خروجی تفاوت بیتی بین دو مقدار را نشان میدهد و با داشتن این تفاوت و یکی از طرفین میتوان طرف دیگر را بدست آورد.
از این عملگر در رمزنگاری symmetric به همین اسم یعنی xor استفاده شده است.
از این تکنیک برای کم کردن Redundancy اطلاعات بکاپ در برخی از نصخه های تکنولوژی RAID استفاده شده است.
حال ما میخوایم با کمک این گیت رمزنگاری xor را در پایتون پیاده سازی کنیم و نگاهی به روش کار کردن با این عملگر در پایتون بندازیم
2^3=1
علامت ^ در پایتون برای عملگر xor است در تصویر بالا ما 2 را با 3 xor کردیم 2 در مبنای دو برابر است با 10 و 3 برابر است با 11 طبق جدول xor زمانی که این دورا باهم xor کنیم جواب ما 01 است در مبنای ده میشه 1.
برای برگرداند خروجی به حالت اول باید بدین شکل عمل کنیم:
بدین شکل خروجی ما به حالت اول برگشت.
اما برای رمزنگاری متن ما باید به شکل دیگری عمل کنیم. به سورس زیر دقت کنید
در تابعی که بالا نوشتیم یک متغیر به اسم plaint(متنی که میخوایم رمزنگاری کنیم)و یک key به عنوان کلید میگیریم یک متغیر به نام j که ان را برابر با 0 گزاشتیم و یک متغیر به نام _len که ان را برابر با طول کلیدمان گذاشتیم در خط بعد یک لیست خالی تعین کردیم یک حلقه for با range طول ورودیمون درست کردیم یک try و excapt برای کنترل خطا ها نوشتیم و داخل ان به لیست خالی مان xor شده ورودی و کلید مونو اضافه کردیم داخل این خط ما یک از index های وردیمان را انتخاب میکنیم و با یکی از index های کلید مان xor کردیم که با index کلید مان با متغیر j تعین میشود و چون احتمال دارد طول کلیدمان از طول متن ورودی کوچیک تر باشد ما گفتیم اگر j بزرگ تر از مساوی طول کلید بود j را برابر با 0 قرار بده در غیر این صورت یدونه به اون اضافه کن
و داخله except گفتیم از حلقه خارج شو و در حلقه بعدی از لیستی که تعین کردیم به صورت بایت به متغیر دیگه اضافه میکنیم و در اخر به base64 تبدیل میکنیم. کار سورس به این شکل میشه
برای رمزگشایی هم از سورس زیر استفاده میکنیم:
این تابعه هم مثل تابع رمزگشایی هست و متن رمزشده رو از base64 خارج میکنیم و با کلید xor میکنیم .
سورس کلی رمزگشای رمزنگاری میشه به این شکل:
به همین سادگی با گیت xor متن رو رمزنگاری و رمزگشایی کردیم.
درمورد امنیت این رمزنگاری هم باید بگم که رمزنگاری ایمنی هست و استفاده های دیگه ای داره که به این مقاله ربطی نداره.
شبکه های اجتماعی ما:لگرام: کدلوژی
اینستاگرام: CodeLogy
گیت هاب: GitHub CodeLogy
یوتیوب: YouYube CodeLogy