Как написать программу для шифрования и дешифрования текста

У меня имеется часть кода, которая занимается записью поступающих значений в текстовый файл программы:

public int writeData() < StreamWriter logStr = new StreamWriter(logPath, true); logStr.WriteLine(currentTime + «Calls are loaded»); // log information logStr.Close(); return 1; >
Также у меня есть функция для считывания и загрузки информации из того самого файла:
protected void readContent()

Как реализовать шифрование файла на стадии сохранения(writeData function) и его же дешифрование на стадии чтения(readContent function)? Я очень далек от темы шифрования данных, потому обратился за помощью на форум

Отслеживать
задан 4 дек 2020 в 10:01
JohnTheRipper8833 JohnTheRipper8833
141 8 8 бронзовых знаков

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Например вот так с использованием AesManaged из System.Security.Cryptography .

class Program < static void Main(string[] args) < string fileName = «file.txt»; string text = «Hello World!»; byte[] key = Enumerable.Range(0, 32).Select(x =>(byte)x).ToArray(); // массив [ 0, 1, 2, . 31 ], для примера FileWriteAllText(fileName, text); Console.WriteLine(«Файл создан. Нажми любую клавишу.»); Console.ReadKey(true); EncryptFile(fileName, key); Console.WriteLine(«Файл зашифрован. Нажми любую клавишу.»); Console.ReadKey(true); DecryptFile(fileName, key); Console.WriteLine(«Файл расшифрован.»); Console.WriteLine(File.ReadAllText(fileName)); Console.ReadKey(true); > private static void EncryptFile(string path, byte[] key) < string tmpPath = Path.GetTempFileName(); using (FileStream fsSrc = File.OpenRead(path)) using (AesManaged aes = new AesManaged() < Key = key >) using (FileStream fsDst = File.Create(tmpPath)) < fsDst.Write(aes.IV); using (CryptoStream cs = new CryptoStream(fsDst, aes.CreateEncryptor(), CryptoStreamMode.Write, true)) < fsSrc.CopyTo(cs); >> File.Delete(path); File.Move(tmpPath, path); > private static void DecryptFile(string path, byte[] key) < string tmpPath = Path.GetTempFileName(); using (FileStream fsSrc = File.OpenRead(path)) < byte[] iv = new byte[16]; fsSrc.Read(iv); using (AesManaged aes = new AesManaged() < Key = key, IV = iv>) using (CryptoStream cs = new CryptoStream(fsSrc, aes.CreateDecryptor(), CryptoStreamMode.Read, true)) using (FileStream fsDst = File.Create(tmpPath)) < cs.CopyTo(fsDst); >> File.Delete(path); File.Move(tmpPath, path); > >

Вывод в консоль

Как сделать свой скрипт для шифрования (+ задачка)


Файл создан. Нажми любую клавишу. Файл зашифрован. Нажми любую клавишу. Файл расшифрован.

Hello World!

Источник: ru.stackoverflow.com

Шифровать строку Python

Шифровать строку Python

Принципы шифрования и криптографии. Расшифруйте послание!

  1. Используйте Simple Crypt для шифрования строки в Python
  2. Используйте библиотеку cryptocode для шифрования строки в Python
  3. Используйте пакет Cryptography для шифрования строки в Python
  4. Используйте алгоритм RSA для шифрования строки в Python

Шифрование можно определить как процесс преобразования обычного текста в зашифрованный текст. По сути, он используется для кодирования данных. Для процесса шифрования требуется ключ, который позже можно использовать для расшифровки исходного сообщения.

В этой статье будут обсуждаться различные методы, которые вы можете использовать для шифрования строки в Python.

Используйте Simple Crypt для шифрования строки в Python

Использование модуля Simple Crypt — это самый быстрый и простой способ добиться процесса шифрования для Python 2.7 и 3. Этот метод преобразует открытый текст в зашифрованный текст за секунды с помощью одной строчки кода.

Читайте также:
Почему не работает программа в контакте

Модуль PyCrypto предоставляет реализацию алгоритма для этой библиотеки и использует шифр AES256 . Этот метод включает проверку HMAC с помощью шифра SHA256 для уведомления об изменении или модификации зашифрованного текста.

Simple Crypt имеет две функции: encrypt и decrypt . Чтобы использовать обе эти функции, необходимо установить модули pycrypto и simplecrypt.

Следующий код использует simplecrypt для шифрования строки в Python:

from simplecrypt import encrypt, decrypt passkey = ‘wow’ str1 = ‘I am okay’ cipher = encrypt(passkey, str1) print(cipher)

Результатом этого кода будет кластер случайных букв.

Для декодирования / дешифрования зашифрованного текста мы будем использовать следующую команду:

print(decrypt(‘wow’, cipher))
I am okay

Используйте библиотеку cryptocode для шифрования строки в Python

Термин cryptocode — это простая библиотека, которая позволяет нам безопасно и просто шифровать и расшифровывать строки в Python 3 или выше. Помните, что эту библиотеку необходимо установить вручную; это можно сделать с помощью команды pip .

Программа ниже использует библиотеку cryptocode для шифрования строки в Python:

import cryptocode str_encoded = cryptocode.encrypt(«I am okay»,»wow») ## And then to decode it: str_decoded = cryptocode.

decrypt(str_encoded, «wow») print(str_decoded)
I am okay

Первым параметром функции будет строка, которую необходимо зашифровать. Второй параметр должен быть ключом, который будет использоваться для расшифровки.

Используйте пакет Cryptography для шифрования строки в Python

Cryptography — это пакет Python, который можно использовать для шифрования с симметричным ключом. Шифрование с симметричным ключом — это способ использования одного и того же ключа для процесса кодирования и декодирования.

Для использования этого метода шифрования необходимо установить библиотеку Cryptography ; это можно сделать с помощью команды pip .

Следующий код использует функции пакета cryptography для шифрования строки в Python:

from cryptography.fernet import Fernet str1 = «I am okay» key = Fernet.generate_key() fernet = Fernet(key) enctex = fernet.

encrypt(str1.encode()) dectex = fernet.decrypt(enctex).

decode() print(«The primordial string: «, str1) print(«The Encrypted message: «, enctex) print(«The Decrypted message: «, dectex)
The primordial string: I am okay The Encrypted message: The Decrypted message: I am okay

В приведенном выше коде мы импортируем Fernet из модуля cryptography.fernet . Затем мы генерируем ключ шифрования, который будет использоваться как для кодирования, так и для целей декодирования. Экземпляр класса Fernet создается с ключом шифрования. Затем строка шифруется экземпляром Fernet. Наконец, он расшифровывается с помощью экземпляра класса Fernet.

Шифрование с симметричным ключом — это простой способ шифрования строки. Единственный недостаток в том, что он сравнительно менее безопасен. Любой, у кого есть ключ, может прочитать зашифрованный текст.

Используйте алгоритм RSA для шифрования строки в Python

Алгоритм RSA в Python реализует шифрование с асимметричным ключом. Шифрование с асимметричным ключом использует два разных ключа для процесса шифрования и дешифрования.

Эти два ключа — Закрытый ключ и Открытый ключ. Открытый ключ является открытым и используется в процессе шифрования. Любой, у кого есть открытый ключ, может зашифровать и отправить данные; закрытый ключ есть только у получателя. Кроме того, кто-то, имеющий к нему доступ, также может расшифровать данные.

Для использования этого метода сначала необходимо установить библиотеку rsa . Вы можете использовать общую команду pip для установки этой библиотеки.

Следующий код использует алгоритм RSA для шифрования строки в Python:

Читайте также:
Авто по программе трейд

import rsa pubkey, privkey = rsa.newkeys(512) str1 = «I am okay» enctex = rsa.encrypt(str1.

encode(),pubkey) dectex = rsa.decrypt(enctex, privkey).decode() print(«The primordial string: «, str1) print(«The Encrypted message: «, enctex) print(«The Decrypted message: «, dectex)

The primordial string: I am okay The Encrypted message: The Decrypted message: I am okay

В приведенном выше коде импортируется модуль rsa , а открытый и закрытый ключи генерируются с помощью функции rsa.newkeys() . Затем строка шифруется с помощью открытого ключа. Затем строку можно расшифровать, используя только закрытый ключ. Открытый и закрытый ключи в этой программе — pubkey и privkey соответственно.

Шифрование с асимметричным ключом обеспечивает лучшую безопасность, чем шифрование с симметричным ключом. Как и в первом случае, конкретный закрытый ключ доступен только получателю и используется для дешифрования. В то время как в последнем существует только один ключ, что делает процесс дешифрования более простым и менее защищенным от атак третьих лиц в середине между отправителем и получателем.

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

Сопутствующая статья — Python String

  • Как проверить, что строка пуста в Python
  • Как удалить белый пробел в строке на Python
  • Как конвертировать строку в дату на Python
  • Как преобразовать строку в нижний кейс на Python 2 и 3
  • Как проверить, содержит ли струна подвеску на Python
  • Как преобразовать список в струну на Python

Источник: www.delftstack.com

Шифрование и дешифрование файлов с помощью Python

В этой статье мы обсудим как зашифровать и расшифровать файлы с помощью Python.

Введение

В развивающемся мире передачи данных и информации безопасность содержимого файлов остается одной из самых серьезных проблем для компаний. Некоторая информация может быть защищена паролем (электронная почта, логины), в то время как другая информация, передаваемая по электронной почте или FTP, неэффективна, если защищена каким-либо ключевым словом. Здесь шифрование файлов играет большую роль и обеспечивает безопасность и удобство, которые необходимы сторонам, участвующим в передаче файлов.

Давайте посмотрим, как мы можем зашифровать и расшифровать некоторые из наших файлов с помощью Python. Мы будем следовать симметричному шифрованию, что означает использование одного и того же ключа для шифрования и дешифрования файлов.

Чтобы продолжить изучение этого руководства, нам понадобится следующая библиотека Python: cryptography .

Если он у вас не установлен, откройте «Командную строку» (в Windows) и установите его, используя следующий код:

pip install cryptography

И нам также понадобится образец файла, с которым мы будем работать. Ниже представлен образец файла .csv с некоторыми данными об оценках учащихся:
grades.csv

Создание ключа

В нашем примере мы будем использовать симметричное уравнение:

from cryptography.fernet import Fernet

Fernet – это аутентифицированная криптография, которая не позволяет читать и / или изменять файл без «ключа».

Теперь давайте создадим ключ и сохраним его в той же папке, что и наш файл данных:

key = Fernet.generate_key() with open(‘mykey.key’, ‘wb’) as mykey: mykey.write(key)

Если вы проверите каталог, в котором находится ваш код Python, вы должны увидеть файл mykey.key . Вы можете открыть его в любом текстовом редакторе (в моем случае он отображается в локальном каталоге, потому что я использую VS Code). Файл должен содержать одну строку, которая представляет собой строку из некоторого порядка символов. Для меня это «VlD8h2tEiJkQpKKnDNKnu8ya2fpIBMOo5oc7JKNasvk =».

Читайте также:
Qui quo установить программу

Загрузка ключа

После того, как мы сгенерировали ключ шифрования, нам нужно будет загрузить его в нашу среду, чтобы зашифровать / расшифровать файлы.

Следующий шаг очень прост и требует просто открыть файл mykey.key и сохранить его в локальной памяти:

with open(‘mykey.key’, ‘rb’) as mykey: key = mykey.read() print(key)

И чтобы убедиться, что загрузка ключа прошла успешна, мы увидим следующий вывод:

VlD8h2tEiJkQpKKnDNKnu8ya2fpIBMOo5oc7JKNasvk=

Ключ шифрования теперь хранится локально в качестве ключевой переменной.

Шифрование файла с помощью Python

Теперь, когда у нас есть файл для шифрования и ключ шифрования, мы напишем функцию, которая будет использовать их и возвращать зашифрованный файл:

f = Fernet(key) with open(‘grades.csv’, ‘rb’) as original_file: original = original_file.read() encrypted = f.encrypt(original) with open (‘enc_grades.csv’, ‘wb’) as encrypted_file: encrypted_file.write(encrypted)

Объяснение:

  • Мы инициализируем объект Fernet как локальную переменную f.
  • Затем мы считываем наши исходные данные (файл grades.csv).
  • Затем мы шифруем данные с помощью объекта Fernet и сохраняем их как зашифрованные.
  • И, наконец, мы записываем его в новый файл .csv под названием «enc_grades.csv».

Вы можете посмотреть зашифрованный файл здесь:
enc_grades.csv

Расшифровка файла с помощью Python

После того, как вы зашифровали файл и, например, успешно переместили его в другое место, вы захотите получить к нему доступ. Теперь эти данные находятся в зашифрованном формате. Следующим шагом будет его дешифрование до исходного содержимого.

Процесс, которому мы сейчас будем следовать, – это процесс, обратный шифрованию. Точно такой же процесс, но теперь мы перейдем от зашифрованного файла к расшифрованному:

f = Fernet(key) with open(‘enc_grades.csv’, ‘rb’) as encrypted_file: encrypted = encrypted_file.read() decrypted = f.decrypt(encrypted) with open(‘dec_grades.csv’, ‘wb’) as decrypted_file: decrypted_file.write(decrypted)

Объяснение:

  • Мы инициализируем объект Fernet как локальную переменную f
  • Затем мы читаем наши зашифрованные данные (файл enc_grades.csv)
  • Затем мы расшифровываем данные с помощью объекта Fernet и сохраняем их в расшифрованном виде.
  • И, наконец, мы записываем его в новый файл .csv под названием «dec_grades.csv».

Вы можете посмотреть расшифрованный файл здесь:
dec_grades.csv

Сравнивая «dec_grades.csv» с исходным «grades.csv», вы увидите, что на самом деле эти два файла имеют идентичное содержимое. Наш процесс шифрования / дешифрования прошел успешно.

Полный пример объектно-ориентированного программирования

Это бонусная часть, где я организовал все в более структурированном формате:

class Encryptor(): def key_create(self): key = Fernet.generate_key() return key def key_write(self, key, key_name): with open(key_name, ‘wb’) as mykey: mykey.write(key) def key_load(self, key_name): with open(key_name, ‘rb’) as mykey: key = mykey.read() return key def file_encrypt(self, key, original_file, encrypted_file): f = Fernet(key) with open(original_file, ‘rb’) as file: original = file.read() encrypted = f.encrypt(original) with open (encrypted_file, ‘wb’) as file: file.write(encrypted) def file_decrypt(self, key, encrypted_file, decrypted_file): f = Fernet(key) with open(encrypted_file, ‘rb’) as file: encrypted = file.read() decrypted = f.decrypt(encrypted) with open(decrypted_file, ‘wb’) as file: file.write(decrypted)

А это пример шифрования / дешифрования с использованием указанного выше класса:

encryptor=Encryptor() mykey=encryptor.key_create() encryptor.key_write(mykey, ‘mykey.key’) loaded_key=encryptor.key_load(‘mykey.key’) encryptor.file_encrypt(loaded_key, ‘grades.csv’, ‘enc_grades.csv’) encryptor.file_decrypt(loaded_key, ‘enc_grades.csv’, ‘dec_grades.csv’)

Вывод

В этой статье рассказывается о базовом симметричном шифровании и дешифровании файлов с помощью Python. Мы обсудили некоторые части криптографической библиотеки, а также создали полный пример процесса.

Источник: uproger.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru