Як ви бачите, ми створили наш екземпляр хешу і викликали його метод дайджесту одночасно. Далі, ми виводимо наш хеш, щоб на нього подивитися. Особисто я використовую хеш sha1, так як його хеш досить короткий і відмінно лягає в сторінку. Але в той же час він і не дуже безпечний. так що ви вільні вибирати те, що вам зручно.
висновок ключа
У Python вельми обмежена підтримка виведення ключа, вбудована в стандартну бібліотеку. Фактично, єдиний метод, пропонований hashlib це pbkdf2_hmac. який є заснованої на паролі функцією виведення ключа PKCS # 5. Він використовує HMAC в якості своєї псевдослучайной функцією. Ви можете використовувати що-небудь типу для хеширования вашого пароля, так як він підтримує сіль і ітерації. Наприклад, якщо ви збираєтеся використовувати SHA-256. вам може знадобитися сіль мінімум в 16 бітів і 100.000 ітерацій. Будучи швидкої відсиланням, сіль - це просто випадкові дані, які ви використовуєте в якості доповнення в вашому хеше, з метою ускладнення розшифровки вашого пароля. В цілому, вона захищає ваш пароль від словникових атак і розрахованих заздалегідь райдужних таблиць. Давайте подивимося на приклад:
f. write (key. publickey (). exportKey ())
Спочатку ми імпортуємо RSA з Crypto.PublicKey. Потім, ми створюємо примітивний код доступу. Далі, ми генеруємо ключ RSA на 2048 бітів. Тепер ми підходимо до найцікавішої частини. Для генерації приватного ключа. нам потрібно викликати метод exportKey нашого ключа RSA, і передати йому наш код доступу, який буде використаний стандартом PKCS, чия схема шифрування буде використана для захисту нашого приватного ключа. Після цього ми записуємо файл на диск. Далі, ми створюємо наш приватний ключ через метод publickey нашого ключа RSA. Ми використовували короткий шлях в цій частині коду, зв'язавши виклик методу exportKey з методом publickey для запису файлу на диск.
шифрування файлу
Тепер у нас в розпорядженні є і приватний і публічний ключі. так що ми можемо зашифрувати деякі дані і вписати їх в файл. Ось досить простий приклад:
Якщо ви розібралися з попереднім прикладом, то цей код повинен бути досить простим для розбору. В даному випадку, ми відкриваємо наш зашифрований файл для читання в бінарному режимі. Далі, ми імпортуємо наш приватний ключ. Зверніть увагу на те, що коли ви імпортуєте приватний ключ, ви повинні передати йому код доступу. В іншому випадку виникне помилка. Далі ми зчитуємо наш файл. Ви помітите, що спочатку ми зчитуємо приватний ключ, потім 16 байтів для nonce, за якими слідують 16 байтів, які є тегом, і нарешті, іншу частину файлу, який і є нашими даними. Далі нам потрібно розшифрувати наш ключ сесії, перебудувати наш ключ AES і розшифрувати дані. Ви можете використовувати PyCryptodome в набагато ширшому ряді випадків. Однак, нам потрібно йти далі і подивитися, що ще ми можемо зробити для наших криптографічних потреб в Python.
пакет cryptography
Пакет cryptography націлений на те, щоб бути «криптографом для людей», так само як і бібліотека requests є «HTTP для людей». Суть в тому, що вам потрібно розробити прості криптографічні рецепти які і безпечні, і прості у використанні. Якщо потрібно, ви можете перейти до низькорівневих криптографічним примітивам, для яких потрібно лише знати, що ви робите, в іншому випадку ви створите щось явно марна в контексті захисту. Якщо ви працюєте в Python 3.5 Windows. ви можете встановити цей пакет за допомогою pip наступним чином:
print (decrypted_text) # 'My super secret message'
Підведемо підсумки
У даній статті ми добряче пройшлися по поверхні питання. «Як, і що робити з пакетами PyCryptodome і cryptography? ». Ми розглянули чимало варіантів застосування даних пакетів в шифруванні і розшифровці рядків і файлів. Переконайтеся в тому, що приділіть час документації. перед тим як почати експериментувати з викладеної в даній статті інформацією.