Резюме:
Криптография
- Определение
- Терминологии криптографии
Обратный шифр
- Пример
- Основы Python
- Кодирование программы обратной шифры
Алгоритм цезаря шифра
- Время кодирования
- Получение ключа Caesar Ciper
- Используя ключ, чтобы найти пароль
Алгоритм гниль 13 шифр
- Определение
Создание шифрования
- Установка библиотеки
- Тестирование библиотеки
- Генерация ключа
- Шифрование
- Расшифровка
Бонус
- Создание ключа из пароля
- Шифрование и расшифровывая файлы
1. Криптография
1.1 Определение
Криптография это Искусство общения между двумя пользователями через закодированные сообщения
Отказ Наука криптографии возникла с основным мотивом обеспечения безопасности конфиденциальных сообщений, переданных из одной стороны в другую.
Предварительно исправить «склеп» означает «скрытый» или «хранилище» и суффикс «графики» означает «написание».
Криптография определяется как искусство и наука о сокрытии сообщения для введения конфиденциальности и секретности, как признано в информационной безопасности.
1.2 Терминологии криптографии:
Простой текст (Texte Brut):
Текст, который читается и может быть понятным всеми пользователями.
Шифр текст (Texte Chiffré):
Сообщение, полученное после применения криптографии на простом тексте.
Шифрование (шифручество):
Процесс конвертации (от простого текста в шифр текста).
Расшифровка (декорипция):
Процесс конвертации (из зашифрованного текста на простой текст).
(Рисование схема)
2. Обратный шифр
2.1 Пример:
Давайте рассмотрим следующие примеры открытого текста и обратного шифра
Каждый навык, приобретенный в кибербезопасности, усердно выиграл. Он включает в себя широкий массив предварительных условий (даже) для начала.
EdRtarts Teg OT Setisiuqererp Fo Yarra A Sedulcni теперь Drah Si YtiRuces Reyc Ni Deriuqca Lliks Yreve.
С заявлением (1), кто-то может читать и понять это ясно. Как насчет высказывания 2 – это абсолютный гибберский, или так похоже на это. Однако криптаналитик может быть в состоянии расшифровать концепцию заявления (2).
В приведенных выше примерах заявление (1) является простой текстом, а оператор (2) является обратным выбором шифров. Таким образом, криптография определяется как искусство манипулирования или скремблирования простого текста в зашифрованное текст.
2.2 Основы Python
Python это интерпретирован , высокий уровень , общего назначения Язык программирования Отказ Создано Гвидо Ван Россом И впервые выпущено в 1991 году, философия дизайна Python подчеркивает Читаемость кода С его заметным использованием Значительный пробел Отказ Его языковые конструкции и Объектно-ориентированные Подход Цель, чтобы помочь программистам написать четкое, логический код для небольших и масштабных проектов.
# Printing a "Hello World!" print("Hello world!") # Declaration of strings is shown below: variable_name_string = "Variable content string" print(variable_name_string) # He lists of python can be declared as compound data types, separated by commas and enclosed within square brackets ([]). list = [ 'abcd', 786 , 2.23, 'rocky', 70.2 ] tinylist = [123, 'rocky'] print(list[0]) print(tinylist) # Python dictionary is a type of hash table. A dictionary key can be almost any data type of Python, which are usually numbers or strings. thisdict = { "brand": "Ford", "model": "Mustang", "year": 1964 } print(thisdict) print(thisdict["model"]) # Note the difference # Printing the values for x in thisdict: print(x) # Printing the keys for x in thisdict: print(thisdict[x]) # Printing keys + values for x, y in thisdict.items(): print(x, y) # adding a key and its value thisdict["color"] = "red" print(thisdict) # removing the first item (here it's brand) thisdict.popitem() print(thisdict) # The del keyword removes the item with the specified key name del thisdict["model"] print(thisdict)
2.3 Кодирование программы обратного шифра:
(Создание подходящего алгоритма для этого случая) -> шифр шифра.
message = 'This is program to explain reverse cipher.' translated = '' #cipher text is stored in this variable i = len(message) - 1 while i >= 0: translated = translated + message[i] i = i - 1 print("The cipher text is : ", translated)
3. Алгоритм цезаря шифра
Алгоритм Caesar Chipher содержит следующие функции:
- Техника Caesar Chipher – это простой и легкий метод метода шифрования.
- Это простой тип замещения шифра.
- Каждая буква простого текста заменяется письмом с некотором фиксированным количеством позиций с алфавитом.
#A python program to illustrate Caesar Cipher Technique def encrypt(text,s): result = "" # traverse text for i in range(len(text)): char = text[i] # Encrypt uppercase characters if (char.isupper()): result += chr((ord(char) + s-65) % 26 + 65) # Encrypt lowercase characters else: result += chr((ord(char) + s - 97) % 26 + 97) return result #check the above function text = "CIPHER CAESAR ENCRYPTION" s = 4 print ("Text : " + text) print ("Shift : " + str(s)) print ("Cipher: " + encrypt(text,s))
3.2 Получение ключа
message = 'GIEWIVrGMTLIVrHIQS' #encrypted message LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' for key in range(len(LETTERS)): translated = '' for symbol in message: if symbol in LETTERS: num = LETTERS.find(symbol) num = num - key if num < 0: num = num + len(LETTERS) translated = translated + LETTERS[num] else: translated = translated + symbol print('Hacking key #%s: %s' % (key, translated))
3.3 Взлом Caesar Chipher с помощью ключа
import string from time import sleep alphabet = string.ascii_lowercase # "abcdefghijklmnopqrstuvwxyz" def decrypt(): print("Welcome to Caesar Cipher Decryption.\n") encrypted_message = input("Enter the message you would like to decrypt: ").strip() print() key = int(input("Enter key to decrypt: ")) decrypted_message = "" for c in encrypted_message: if c in alphabet: position = alphabet.find(c) new_position = (position - key) % 26 new_character = alphabet[new_position] decrypted_message += new_character else: decrypted_message += c print("\nDecrypting your message...\n") sleep(2) # give an appearance of doing something complicated print("Stand by, almost finished...\n") sleep(2) # more of the same print("Your decrypted message is:\n") print(decrypted_message) decrypt()
4. Алгоритм гниль 13 шифр
4.1 Определение
ГРТ 13 шифр относится к сокращенной форме Повернуть на 13 мест Отказ Это особый случай Caesar Chipher, в котором сдвиг всегда 13. Каждое письмо смещено на 13 мест для шифрования или расшифровки сообщения.
5. Давайте шифр
5.1 Установка библиотеки
pip -m install cryptography
5.2 Тестирование библиотеки
import cryptography
5.3 Создание ключа
from cryptography.fernet import Fernet as fn test_key = fn.generate_key() print(test_key) file = open('test_key.key', 'wb') file.write(test_key) file.close()
5.4 Шифрование сообщения
from cryptography.fernet import Fernet as ft message = input("\n Veuillez entrer le message que vous souhaiter crypter: \n").encode() file = open('test_key.key', 'rb') key = file.read() f = ft(key) encrypted_message = f.encrypt(message) print("\n", encrypted_message) file.close()
5.5 Дешифрование шифра
from cryptography.fernet import Fernet as ft encypted_message = input("\n Veuillez coller le chiffrement à décrypter: \n\t").encode() file = open('test_key.key', 'rb') key = file.read() f = ft(key) decrypted_message = f.decrypt(encypted_message) print("\n ", decrypted_message) file.close()
6. Бонус
6.1 Создание ключа из пароля
Если вы хотите основывать ключ от строки, которую пользователь может ввести или какую-либо другую форму ввода, вы можете создать ключ, используя этот вход.
import base64 import os from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import hashes from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC password_provided = "password" # This is input in the form of a string password = password_provided.encode() # Convert to type bytes salt = b'salt_' # CHANGE THIS - recommend using a key from os.urandom(16), must be of type bytes kdf = PBKDF2HMAC( algorithm=hashes.SHA256(), length=32, salt=salt, iterations=100000, backend=default_backend() ) key = base64.urlsafe_b64encode(kdf.derive(password)) # Can only use kdf once
6.2 Шифрование и расшифровывая файлы
Мы также можем шифровать файлы, используя этот метод, поскольку файлы можно прочитать как байты. Просто откройте файл, прочитайте байты, зашифруйте данные и запишите их в новый файл. Шифровать:
from cryptography.fernet import Fernet key = b'' # Use one of the methods to get a key (it must be the same when decrypting) input_file = 'test.txt' output_file = 'test.encrypted' with open(input_file, 'rb') as f: data = f.read() fernet = Fernet(key) encrypted = fernet.encrypt(data) with open(output_file, 'wb') as f: f.write(encrypted) # You can delete input_file if you want
А потом к расшифровать файл:
from cryptography.fernet import Fernet key = b'' # Use one of the methods to get a key (it must be the same as used in encrypting) input_file = 'test.encrypted' output_file = 'test.txt' with open(input_file, 'rb') as f: data = f.read() fernet = Fernet(key) encrypted = fernet.decrypt(data) with open(output_file, 'wb') as f: f.write(encrypted) # You can delete input_file if you want
Оригинал: “https://dev.to/samcodesign/introduction-to-data-encryption-with-python-58a8”