Код программы по шифрованию

Use saved searches to filter your results more quickly

Cancel Create saved search

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window.

Reload to refresh your session.

Программа для шифрования и дешифрования текста с ключом на WinForms. Метод шифрования: base64 -> AES (Rijndael). Можно сохранять и загружать файл, генерировать случайный ключ и очищать поля.

License

nblackninja/encryption

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags

Nothing to show

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

GPG4Win: обзор бесплатной программы для шифрования файлов, наследницы оболочек GnuPG

Cancel Create

  • Local
  • Codespaces

HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

Latest commit message
Commit time

README.md

Encryption — шифрование текста с ключом

Программа на WinForms для шифрования и дешифрования текста с ключом.

Метод шифрования: base64 -> AES (Rijndael).

Интерфейс программы

Шифрование_jVtPyCMRg7

  • Загружать / сохранять файл
  • Открывать ВК в программе (устарело)
  • Генерировать сложный случайный ключ
  • Очищать все поля

Дата создания: 30.11.2018

About

Программа для шифрования и дешифрования текста с ключом на WinForms. Метод шифрования: base64 -> AES (Rijndael). Можно сохранять и загружать файл, генерировать случайный ключ и очищать поля.

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

Шифрование данных с помощью алгоритма AES-256 на Java

Picocrypt: портативная и очень простая программа для шифрования

В данной статье говорится о том, как осуществить шифрование с помощью алгоритма AES-256 на Java.

Как уже говорилось ранее, AES-256 представляет собой алгоритм шифрования с симметричным ключом. Это означает, что для шифрования и дешифрования используется один и тот же криптографический ключ.

Алгоритм используется в военных целях, используется для шифрования передачи сообщений по открытым каналам, для шифрования файлов. Так же с помощью AES-256 злоумышленники шифруют файлы на компьютерах «жертв», используя его в целях вымогательства денег (программы-вымогатели). Расшифровать данные возможно только лишь зная ключ.

Как зашифровать и дешифровать с помощью AES-256 средствами Java

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

Читайте также:
Программа на новый год своими руками

package Crypto; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import java.security.NoSuchAlgorithmException; /** * Created by administrator on 16.03.2018. */ public class Aes256Class < private SecretKey secretKey; public Aes256Class() < try < KeyGenerator keyGenerator = KeyGenerator.getInstance(«AES»); keyGenerator.init(256); this.secretKey = keyGenerator.generateKey(); >catch (NoSuchAlgorithmException e) < e.printStackTrace(); >> public byte[] makeAes(byte[] rawMessage, int cipherMode) < try < Cipher cipher = Cipher.getInstance(«AES»); cipher.init(cipherMode, this.secretKey); byte [] output = cipher.doFinal(rawMessage); return output; >catch (Exception e) < e.printStackTrace(); return null; >> >

В конструкторе Aes256Class ( ) инициализируется объект keyGenerator , которому задается размер ключа 256 бит. Далее с помощью функции generateKey() генерируется случайный ключ с заданным размером (256 бит).

В функцию makeAes передается исходный массив байт и режим работы объекта класса Cipher:

Cipher.ENCRYPT_MODE либо Cipher.DECRYPT_MODE.

В классе с функцией main можем вызвать описанные выше методы следующим образом:

package Main; import Crypto.Aes256Class; import javax.crypto.Cipher; /** * Created by administrator on 16.03.2018. */ public class Main < public static void main(String[] args) < Aes256Class aes256 = new Aes256Class(); String mes = «Hello»; for (int i = 0; i < 3; i++) < byte[] shifr = aes256.makeAes(mes.getBytes(), Cipher.ENCRYPT_MODE); System.out.println(new String(shifr)); byte[] src = aes256.makeAes(shifr, Cipher.DECRYPT_MODE); System.out.println(new String(src)); >> >

Получаем следующий результат:

Java AES

Объясняю, зачем я зациклил выполнение функции makeAes.

Благодаря шифрованию и дешифрованию одного и того же текста несколько раз, можно увидеть, что шифр получается один и тот же, что не есть хорошо.

Это уже может дать злоумышленнику какую-то информацию. Представьте себе, что ваша система отправляет в канал сообщение, например, «Опасность». И отправляет его 10 раз подряд.

Если каким-то образом сеть будет прослушиваться, перехваченное сообщение будет иметь 10 раз подряд один и тот же шифр.

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

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

При дешифрации сообщения можно просто выбросить эти самые последние 8 байт.

Функция приобретет следующий вид:

public byte[] makeAes(byte[] rawMessage, int cipherMode) < try < Cipher cipher = Cipher.getInstance(«AES»); cipher.init(cipherMode, this.secretKey); byte [] output = cipher.doFinal(rawMessage); if(cipherMode == Cipher.DECRYPT_MODE)< byte[]result = new byte[output.length-8]; //Выбрасываем последние 8 байт System.arraycopy(output, 0, result, 0, output.length-8); return result; >return output; > catch (Exception e) < e.printStackTrace(); return null; >>

Вызываем функцию makeAes в методе main:

package Main; import Crypto.Aes256Class; import javax.crypto.Cipher; import java.security.SecureRandom; /** * Created by administrator on 16.03.2018. */ public class Main < public static void main(String[] args) < Aes256Class aes256 = new Aes256Class(); //Массив для соли byte[] salt = new byte[8]; //Исходное сообщение String mes = «Опасность»; //Выполним операцию 10 раз for (int i = 0; i < 10; i++) < //Генерация соли SecureRandom random = new SecureRandom(); random.nextBytes(salt); //Преобразуем исходный текст в поток байт и добавим полученную соль byte[]srcMessage = mes.getBytes(); byte[]fullsrcMessage = new byte[srcMessage.length+8]; System.arraycopy(srcMessage, 0, fullsrcMessage, 0, srcMessage.length); System.arraycopy(salt, 0, fullsrcMessage, srcMessage.length, salt.length); //Шифруем byte[] shifr = aes256.makeAes(fullsrcMessage, Cipher.ENCRYPT_MODE); System.out.println(new String(shifr)); //Дешифруем byte[] src = aes256.makeAes(shifr, Cipher.DECRYPT_MODE); System.out.println(new String(src)); >> >

В этом примере шифруем и дешифруем 10 раз сообщение «Опасность». Получаем следующий результат:

Java AES with salt

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

Читайте также:
Написать программу которая по заданным трем числам определяет является

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

Нужна очень «хитрая» реализация алгоритма, задача которой максимально запутать злоумышленника.

Когда я писал статью о реализации данного алгоритма на C# я положился на реализацию AES от Microsoft.

Реализация AES-256 на Java с помощью фреймворка Spring Security

В данной статье приведу реализацию AES с помощью Java фреймворка Spring Security:

package Main; import org.springframework.security.crypto.encrypt.Encryptors; import org.springframework.security.crypto.encrypt.TextEncryptor; import org.springframework.security.crypto.keygen.KeyGenerators; /** * Created by administrator on 16.03.2018. */ public class Main < public static void main(String[] args) < final String password = «Here is the password»; String textToEncrypt = «Hello»; for (int i = 0; i < 10; i++) < String salt = KeyGenerators.string().generateKey(); TextEncryptor encryptor = Encryptors.text(password, salt); String cipherText = encryptor.encrypt(textToEncrypt); String decryptedText = encryptor.decrypt(cipherText); System.out.println(«Src: » + textToEncrypt); System.out.println(«Cipher: » + cipherText); System.out.println(«Decrypted: » + decryptedText); System.out.println(«__________________»); >> >

Результат работы кода:

AES Spring Security

Как видите, реализация AES-256 от Spring Security не подводит. Как знать, что это именно AES? В официальной документации есть такое упоминание:

The «standard» encryption method is 256-bit AES (Spring Crypto Module)

P.S. Расшифровать подобные сообщения относительно разумными средствами (взломать шифр), не имея ключа в настоящее время не представляется возможным.

Можете попробовать перебором паролей, если у вас в запасе есть сотни миллиардов лет.

Источник: razilov-code.ru

XIII Международная студенческая научная конференция Студенческий научный форум — 2021

Шифрование и дешифрование текстовых файлов методом XOR-шифрования

Куклин А.Е. 1
1 Тобольский индустриальный институт
Работа в формате PDF

Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке «Файлы работы» в формате PDF

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

Ключевые слова: шифрование, дешифрование, XOR-шифрование.

Information security issues are currently receiving much attention. Among the various means of protecting information, cryptographic methods occupy a special place. The work shows the development of a software product in the C ++ programming language, which implements such encryption methods as the simple replacement (substitution) method, allowing ordinary computer users to encrypt and decrypt the text they need.

Keywords: encryption, decryption, XOR encryption.

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

Программ для шифрования файлов существует бессчетное множество, большинство из них просты и удобны в применении [2]. Как ни странно, но самым простым и одним из самых эффективных, на мой взгляд, (при правильном использовании) алгоритмов шифрования является так называемое XOR-шифрование [1]. Алгоритм XOR-шифрования основан на применении бинарной логической операции «Исключающее или» [3].

На вход алгоритму подается исходный текст (в общем случае, любой набор байт, т.е. произвольный файл) и строка пароля/ключа. Идея алгоритма заключается в том, что к каждому символу исходного текста и очередному символу строки пароля/ключа применяется побитовая логическая операция XOR. Результат записывается в файл. Операция XOR обладает симметричностью [4].

Читайте также:
Детские сады которые работают по программе детство

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

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

1) На входе поступают указатели на исходный и результирующий файлы.

2) Ввод ключа шифрования.

3) Чтение очередного символа (байта) из исходного файла.

4) Применение операции XOR к прочитанному байту и очередному символу ключа.

5) Результат операции записывается в результирующий файл.

6) Если не достигнут конец исходного файла, переход на шаг 2.

7) Если ключ короче исходного файла (а в подавляющем большинстве случаев так и будет), то ключ используется циклически, т.е. после последнего символа пароля вновь переход к первому.

Рис.1 Результат работы программы «Шифрование»

Инструкция для работы с приложением «Шифрование».

1) Открыть файл input.txt и ввести исходный текст для шифрования. 2) Запустить приложение Shifr.exe. 3) Ввести ключ шифрования размером от 1 до 10 символов. При введении ключа более 10 символов, программа будет шифровать текст, но в ключе читаются только первые 10 символов, остальные программа отбрасывает. 4) Нажать Enter.

5) Открыть файл Shifr.txt, в который записался зашифрованный текст.

Приведу фрагмент программного кода «Шифрование».

FILE *input = fopen(«input.txt», «rb»); \ открытиефайлаввода

FILE *output = fopen(«shifr.txt», «wb»); \ открытиефайлавывода

if ( input != NULL output != NULL )

unsigned char buffer[BUFSIZ];

size_t count, i, j = 0;

count = fread(buffer, sizeof *buffer, sizeof buffer, input); \ началочтенияисходногофайла

fwrite(buffer, sizeof *buffer, count, output); \ переписьисходногофайлавзашифрованныйвид

> while ( count == sizeof buffer );

fclose ( output ); \закрытие файла вывода

Аналогично, для расшифрования текста нужно.

1) Открыть файл Shifr.txt и скопировать/ввести в него текст, который нужно расшифровать. 2) Запустить приложение Deshifr.exe. 3) Ввести ключ шифрования, он должен быть тем же, что и при шифровании текста, иначе программа текст не расшифрует (в ключе читаются только первые 10 символов, остальные программа отбрасывает и продолжает шифрование). 4) Нажать Enter. 5) Открыть файл Deshifr.txt, в который записывается расшифрованный текст.

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

1. Банк лекций. Шифрование и дешифрование [Электронный ресурс]. – URL : https :// siblec . ru / telekommunikatsii / teoreticheskie — osnovy — tsifrovoj — svyazi /14- shifrovanie — ideshifrovanie (дата обращения: 04.10.2020).

2. Басалова Г. Основы криптографии: Информация [Электронный ресурс]. – URL : https :// www . intuit . ru / studies / courses /691/547/ info (дата обращения: 07.10.2020).

3. Методика XOR-шифрования [Электронный ресурс]. – URL: http://kriptografea.narod.ru/XOR.html (дата обращения: 17.10.2020).

4. Симметричные и ассиметричные криптосистемы [Электронный ресурс]. – URL : https :// ru . wikipedia . org / wiki /Симметричные_криптосистемы (дата обращения: 07.10.2020).

5. Шифрование [Электронный ресурс]. – URL : https :// ru . wikipedia . org / wiki /Шифрование (дата обращения: 12.10.2020).

Источник: scienceforum.ru

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