Рубрики
Без рубрики

Введение в шифрование данных с Python

Резюме: Определение криптографии Керминологии криптографии обратного шифра пример PYT … Теги с Python, криптографией, кибербезопасность.

Резюме:

  1. Криптография

    1. Определение
    2. Терминологии криптографии
  2. Обратный шифр

    1. Пример
    2. Основы Python
    3. Кодирование программы обратной шифры
  3. Алгоритм цезаря шифра

    1. Время кодирования
    2. Получение ключа Caesar Ciper
    3. Используя ключ, чтобы найти пароль
  4. Алгоритм гниль 13 шифр

    1. Определение
  5. Создание шифрования

    1. Установка библиотеки
    2. Тестирование библиотеки
    3. Генерация ключа
    4. Шифрование
    5. Расшифровка
  6. Бонус

    1. Создание ключа из пароля
    2. Шифрование и расшифровывая файлы

1. Криптография

1.1 Определение

Криптография это Искусство общения между двумя пользователями через закодированные сообщения Отказ Наука криптографии возникла с основным мотивом обеспечения безопасности конфиденциальных сообщений, переданных из одной стороны в другую.

Предварительно исправить «склеп» означает «скрытый» или «хранилище» и суффикс «графики» означает «написание».

Криптография определяется как искусство и наука о сокрытии сообщения для введения конфиденциальности и секретности, как признано в информационной безопасности.

1.2 Терминологии криптографии:

  • Простой текст (Texte Brut):

    ​ Текст, который читается и может быть понятным всеми пользователями.

  • Шифр текст (Texte Chiffré):

    ​ Сообщение, полученное после применения криптографии на простом тексте.

  • Шифрование (шифручество):

    ​ Процесс конвертации (от простого текста в шифр текста).

  • Расшифровка (декорипция):

    ​ Процесс конвертации (из зашифрованного текста на простой текст).

    (Рисование схема)

2. Обратный шифр

2.1 Пример:

Давайте рассмотрим следующие примеры открытого текста и обратного шифра

  1. Каждый навык, приобретенный в кибербезопасности, усердно выиграл. Он включает в себя широкий массив предварительных условий (даже) для начала.

  2. 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”