DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Лабораторна робота №3. Алгоритм симетричного блокового шифрування CAST128

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
Комп’ютерні науки
Кафедра:
Кафедра електронних обчислювальних машин

Інформація про роботу

Рік:
2018
Тип роботи:
Лабораторна робота
Предмет:
Проектування засобів захисту інформації в комп’ютерних мережах
Група:
КН-1
Коротко про документ

Про що ця робота

У роботі реалізовано програму симетричного блокового шифрування повідомлення за алгоритмом CAST128 на платформі Android. Наведено теоретичні відомості про блокові криптоалгоритми та лістинг програмного коду.

У роботі розглядаються

  • Симетричне блокове шифрування
  • Алгоритм CAST128
  • Захист інформації в комп'ютерних мережах
  • Криптографічні алгоритми
  • Розробка мобільних додатків
  • Java для Android

Зміст і розділи

  1. Мета
  2. Теоретичні відомості
  3. Завдання
  4. Текст програми
  5. Діаграма класів
  6. Результат виконання програми
  7. Висновок
Для кого:Студенти технічних спеціальностей вищих навчальних закладів, які вивчають дисципліну захисту інформації в комп'ютерних мережах.
Викладачі:Морозов

Ключові поняття

CAST128симетричне шифруванняшифруваннядешифруванняключкриптоалгоритмAndroidMainActivityCast128Driver

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки Національний університет „Львівська політехніка” Кафедра ЕОМ / Лабораторна робота №3 з дисципліни: “Проектування засобів захисту інформації в комп'ютерних системах та мережах” на тему: “Алгоритм симетричного блокового шифрування CAST128” Львів 2017 Мета: реалізувати програму симетричного блокового шифрування повідомлення за алгоритмом CAST128. Теоретичні відомості Характерною особливістю блокових криптоалгоритмов є той факт, що в ході своєї роботи вони проводять перетворення блоку вхідної інформації фіксованої довжини і одержують результуючий блок того ж об'єму, але недоступний для прочитання стороннім особам, що не володіють ключем. Таким чином, схему роботи блокового шифру можна описати функціями Z=EnCrypt(X,Key) і X=DeCrypt(Z,Key) Ключ Key є параметром блокового криптоалгоритма і є деяким блоком двійкової інформації фіксованого розміру. Початковий (X) і зашифрований (Z) блоки даних також мають фіксовану розрядність, рівну між собою, але необов'язково 15 рівну довжині ключа. Блокові шифри є основою, на якій реалізовані практично всі криптосистеми. Методика створення ланцюжків із зашифрованих блоковими алгоритмами байт дозволяє шифрувати ними пакети інформації необмеженої довжини. Така властивість блокових шифрів, як швидкість роботи, використовується асиметричними криптоалгоритмами, повільними за своєю природою. Відсутність статистичної кореляції між бітами вихідного потоку блокового шифру використовується для обчислення контрольних сум пакетів даних і в хешуванні паролів. Завдання В ході роботи необхідно засвоїти основні принципи побудови алгоритмів симетричного блокового шифрування, розробити програму шифрування/дешифрування згідно алгоритму CAST-128. Текст програми package com.cast128; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import org.apache.commons.codec.binary.Hex; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Cast128Driver driver; private Button encrypt; private Button clear; private Button decrypt; private EditText messageToEncryptView; private EditText keyView; private TextView encryptedMessageView; private TextView decryptedMessageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initUI(); encrypt.setOnClickListener(this); clear.setOnClickListener(this); decrypt.setOnClickListener(this); } private void initUI() { encrypt = findViewById(R.id.encrypt); clear = findViewById(R.id.clear); decrypt = findViewById(R.id.decrypt); messageToEncryptView = findViewById(R.id.editMessage); keyView = findViewById(R.id.editKey); encryptedMessageView = findViewById(R.id.encryptedMessage); decryptedMessageView = findViewById(R.id.decryptedMessage); } @Override public void onClick(View view) { byte[] cipherText; switch (view.getId()) { case R.id.encrypt: driver = new Cast128Driver(); String message = messageToEncryptView.getText().toString(); String key = keyView.getText().toString(); if (message.isEmpty() || key.isEmpty()) { Toast.makeText(MainActivity.this, R.string.emptyWarning, Toast.LENGTH_LONG).show(); } else { driver.setKey(key.getBytes()); cipherText = driver.encrypt(message); String encryptedMessage = new String(Hex.encodeHex(cipherText)); encryptedMessageView.setText(encryptedMessage); decrypt.setVisibility(View.VISIBLE); } break; case R.id.clear: messageToEncryptView.getText().clear(); keyView.getText().clear(); encryptedMessageView.setText(null); decryptedMessageView.setVisibility(View.GONE); decrypt.setVisibility(View.GONE); break; case R.id.decrypt: String msg = driver.decrypt(); decryptedMessageView.setVisibility(View.VISIBLE); decryptedMessageView.setText(msg); break; } } } package com.cast128; import org.bouncycastle.crypto.engines.CAST5Engine; /** * Created by [ім’я автора приховано] on 11-Nov-17. */ public class Cast128Driver extends CAST5Engine { private int blocksCount; private byte[] cipherText; @Override protected void setKey(byte[] key) { super.setKey(key); } public byte[] encrypt(String inputString) { blocksCount = inputString.length() / 8; if (inputString.length() % 8 != 0) { blocksCount++; int symbolsToAppend = 8 - inputString.length() % 8; StringBuilder stringBuilder = new StringBuilder(inputString); for (int i = 0; i < symbolsToAppend; i++) { stringBuilder.append(" "); } inputString = stringBuilder.toString(); } byte[] input = inputString.getBytes(); cipherText = new byte[inputString.length()]; int index = 0; for (int i = 0; i < blocksCount; i++) { encryptBlock(input, index, cipherText, index); index += 8; } return cipherText; } public String decrypt() { byte[] msgText = new byte[cipherText.length]; int index = 0; for (int i = 0; i < blocksCount; i++) { decryptBlock(cipherText, index, msgText, index); index += 8; } return new String(msgText).trim(); } } Діаграма класів / Рис. 1. Діаграма класів Результат виконання програми / Рис. 2. Результат виконання програми Висновок: На даній лабораторній роботі реалізовано програму симетричного блокового шифрування повідомлення за алгоритмом CAST128.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!