Резюме:
Криптография
- Определение
- Терминологии криптографии
Обратный шифр
- Пример
- Основы 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”