CodeLogy - کدلوژی
CodeLogy - کدلوژی
خواندن ۲ دقیقه·۲ سال پیش

رمزنگاری با پایتون

رمزنگاری یکی از راه های مهم برای حفاظت اطلاعات مهم و حساس است. در پست های قبلی در مورد رمزنگاری توضیح دادیم.

رمزنگاری به دو دسته کلی تقسیم میشود:

  • رمزنگاری های نامتقارن.
  • رمزنگاری های متقارن.

رمزنگاری نامتقارن:

این رمزنگاری ها برای رمزنگاری از یک کلید و برای رمزگشایی از یک کلید دیگر استفاده میکنند که به کلید که برای رمزنگاری استفاده میشه رو public و کلید که برای رمزگشایی استفاده میشه رو privet مینامند.

رمزنگاری متقارن:

رمزنگاری های که عمل رمزگشایی و رمزنگاری رو با یک کلید انجام میدن را رمزنگاری متقارن می‌گویند. رمزنگاری متقارن خودش به چند بخش دیگه تبدیل میشه مثل stream, block و..... رمزنگاری های salsa20, chacha, aes, des, des3 مثااب از رمزنگاری متقارن هستند.

چگونه در پایتون داده هایمان را رمزنگاری کنیم؟

کتابخانه cryptography یک Module نه چندان دندون گیر برای پایتون است که با استفاده از این کتابخانه میتوان برای رمزنگاری دیتا استفاده کنیم.

نحوه نصب ماژول cryptography :

برای نصب این ماژول از دستور زیر استفاده میکنیم:

اگر در نصب به مشکلی برخوردید(احتمالا بخاطر ورژن پایتون) از pycryptodome میتونیم استفاده کنیم

ساخت کلید رندم برای رمزنگاری دیتا:

ما میتوینم برای رمزنگاری دیتا کلید رندم تولید کنیم که کتابخانه os برای ما این کارو راحت کرده:

تابع urandom برای ما یک رشته بایت رندم با طول مشخص تولید میکنه:

رمزنگاری دیتا با aes-256:

رمزنگاری aes(Advance Encryption Standard) یک رمزنگاری متقارن است ما میخوایم یک دیتا رو با این الگوریتم رمزنگاری کنیم اول باید از cryptography.hazmat.primitives.ciphers چیزای که لازم داریم که میشه Cipher, algorithms, modes رو ایمپورت میکنیم ما میخایم با aes-256 mode cbc دیتا مونو رمزنگاری کنیم و نیاز به یه کلید 32 بایت و iv با طول 16 بایت لازم داریم:

حالا باید یه شی از کلس Cipher بسازیم:

ورودی اول نشون میده که ما میخوایم از الگوریتم AES با طول کلید 256 بیت استفاده کنیم و کلید رو بهش میدم در ورودی بعد هم میگیم میخوایم از مود CBC استفاده کنیم و IV بهش میدیم در مرحله بعد از یک شی از کلاس encryptor میسازیم:

حالا ما میتونیم رمزنگاری دیتا مون رو انجام بدیم:

خروجی میشه این:

ما متن "a secret message" رمزنگاری کردیم حالا برای رمزگشایی از کد زیر استفاده میکنیم:

در بالا دیتا رمزنگاری شده رو در ct ریختیم و key & iv که رندم ساخته بودیمو بهش دادیم:

مثل رمزنگاری یه شی از کلاس cipher ساختیم و یک شی هم از کلاس decryptor ساختیم و دیتا مون رو رمزگشایی کردیم:

رمزنگاری متقارنرمزنگاریامنیتهککامپیوتر
ارائه مطالب و مقالات علوم کامپیوتر، برنامه نویسی، لینوکس و دنیای جذاب هک و امنیت - شبکه های اجتماعی ما zil.ink/codelogy
شاید از این پست‌ها خوشتان بیاید