سلام
در این مقاله با هم دیگه الگوریتم a1z26 رو در پایتون پیاده میکنیم.
اول توضیح بدم که این الگوریتم چی هست:
این الگوریتم یک روش برای رمزنگاری اطلاعات هست، به صورتی که هر حرف الفبا رو به یک عدد تبدیل میکنه. در واقع این اعداد، شماره یونیکد هر حرف هستند. دقت کنید که این روش رمزنگاری اصلا امن نیست و فقط جنبه تمرین داره.
در پایتون یک متدی داریم به اسم ord که شماره یونیکد هر حرف رو برمیگردونه. مثال:
>>> ord('a') 97
حالا ما برعکس همین متد رو هم داریم که chr هست و اگر عدد هر یونیکد رو بهش بدین کاراکتر متناظر رو براتون برمیگردونه. مثال:
>>> chr(97) a
بریم سراغ پیادهسازی الگوریتم:
def encode(plain): return [ ord(elm) for elm in plain ] >>>encode('amir') [97, 109, 105, 114]
در مثال بالا ما یک فانکشن داریم به اسم encode که به عنوان مقدار ورودی plain رو میگیره که همون متنی هست که میخوایم رمزنگاریش کنیم. در خط بعد با استفاده از یک list comprehension داخل اون متن چرخیدیم و هر کاراکتر متن رو با متد ord تبدیل به عدد میکنیم. در آخر هم نتیجه رو برمیگردونیم.
و در آخر کدمون رو تست کردیم.
حالا میتونیم کدی بنویسیم که همین رمزنگاری رو بشکنه. برای اینکار دقیقا مثل بالا عمل میکنیم منتها به جای ord از chr استفاده میکنیم:
def decode(cipher): return [chr(elm) for elm in cipher] >>> decode( [97, 109, 105, 114] ) 'amir'
میبینید که میتونید با این کد همون اعدادی که از رمزنگاری بدست اومده بودن رو به حالت قبل برگردونید.
اگر دوست دارید این مبحث رو بشکل ویدیویی ببینید یا دوست دارید الگوریتمهای بیشتری رو با پایتون ببینید به لینک زیر یه سر بزنید:
https://www.mongard.ir/courses/algorithms/episode/626/algo-a1z26/