محمد مهدی قندی | M.Mahdi Ghandi
محمد مهدی قندی | M.Mahdi Ghandi
خواندن ۲ دقیقه·۴ سال پیش

رمزنگاری متن با پایتون (به دو روش سامورایی)

رمزگذاری متن???
رمزگذاری متن???

چند وقت پیش با خودم فکر کردم یه برنامه رمزگذاری متن بنویسم. سر کلاس فارسی بودم و حسابی حوصلم سر رفته بود، بنابرین دست به کد شدم و نوشتمش.

امروز با یه مدل دیگه دوباره انجامش دادم و هر دو نسخه رو توی گیتهاب گذاشتم.

اگر بتونید کد های منو بخونید یک اعجوبه هستید. خیلی وحشتناک میشه بعضی اوقات!!

https://github.com/mahdi-dot/text_encrypter

نسخه اول

نسخه اولی که نوشتم دو ورودی داشت: 1- متنی که میخوایم رمزگذاری کنیم 2- پسورد!

خب این کد دو لیست اصلی داشت که در ابتدای کار دقیقا عین هم هستن. متشکل از حروف انگلیسی، اعداد و یک فاصله. لیست اصلی و لیست فرعی. قراره به لیست اصلی هیچ دستی نخوره. کد شروع به کار میکنه، پسورد رو برمیداریم و ایندکس هر کاراکتر را از لیست اصلی میگیریم و جمع میکنیم. عددی در میاد مثلا 29.

حالا کارمون شروع میشه، 29 بار لیست فرعی رو میچرخونیم ، چطوری؟؟ اینطوری: 29 بار این حلقه رو اجرا میکنیم: اولین عضو لیست رو بردار و شوتش کن ته لیست . مثلا در اولین تکرار حلقه a به ته لیست میرود و b اولین عضو لیست ماست.

حالا مرحله رمزگذاری شروع میشه. در این مرحله ما یک متن داریم، یک لیست اصلی، و یک لیست قاتی پاتی و درهم برهم. اینجا یک کار ساده میکنیم.

یک استرینگ خالی میسازیم، و این حلقه را روی متنمان پیاده میکنیم. ایندکس هر کاراکتر متن رو میگیریم و کاراکتری با همان ایندکس رو از لیست فرعی(درهم) پس میگیریم و به استرینگ خالی(سابق) اضافه میکنیم. تبریک میگم متنمون رمزگذاری شد.......



نسخه دوم

خودم با این نسخه بیشتر حال کردم. چون هم پیچیدگی بیشتری داشت و هم پسورد نمیخواست از ما. (:

اولین اتفاقی که میوفته، گرفتن متن شماست. این کد هم دقیقا همان دو لیست زیبای قبلی رو داره (اصلی و فرعی). حالا برنامه یک عدد دو رقمی رندوم میسازه . مثلا 42.

همون اتفاقی که توی نسخه قبل افتاد اینجا هم میوفته، 42 بار لیست فرعی چرخیده میشه و طبق همون دستور قبلی یک متن رمزگذاری شده تحویل میگیریم. کاری که اینجا میکنیم اینه که یه سری کاراکتر عجق وجق میریزیم بین این متنمون .

کاراکتر های عجق وجق من??
کاراکتر های عجق وجق من??


مثلا اگه متن رمزگذاری شده این (xl06 q) بود تبدیل به این (x#l!0?6* #q) میشه که یکم کار رو سخت تر میکنه.

تنها کاری که مونده اینه که کل این متن رو چپه کنیم یعنی تبدیلش میکنیم به این: q# *6?0!l#x

سوالی که میمونه اینه که حالا این چجوری میخواد رمزگشایی بشه؟؟؟؟ اینجوری??: اون عدد دو رقمی که اول درست شد رو یادتونه؟؟؟؟ که ما گفتیم 49 باشه. حالا رقم اول رو میزاریم اول متن و رقم دوم رو میزاریم اخر متن. یعنی اینجوری: 4q# *6?0!l#x9


https://github.com/mahdi-dot/text_encrypter


اینکه چجوری رمزگشایی میشن رو میتونید توی کد ها ببینید. تقریبا همونه ولی برعکس??

ولی ان شاءالله روش رمزگشایی رو توی یه پست دیگه مینویسم??

دوستان دست به تصحیح هم ، تصحیح کنن ، خوشحال میشیم??


پایتونرمزگذاریرندومرمزگشاییpython
علاقمند به دنیای کامپیوتر و هر چی که توش باشه !! مخصوصا برنامه نویسی . از یادگیری خسته نمیشم ، یادگیری هر چیزی !!
شاید از این پست‌ها خوشتان بیاید