Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки
Національний університет „Львівська політехніка”
Кафедра EОМ
Звіт
з лабораторної роботи № 2
з дисципліни: “ Захист інформації в комп’ютерних системах ”
Перестановочний шифр
Варіант 16
2018
Тема: Перестановочний шифр
Мета: Ознайомитись з основами класичної техніки шифрування – перестановочними шифрами.
Завдання:
Створити програму, що реалізує довільний перестановочний шифр.
Підготувати і захистити звіт, в якому обов’язково навести алгоритм роботи даного перестановочного шифру.
Хід роботи:
Код реалізації алгоритму
package sample;
public class RotationAlgorithm {
public static String encrypt(String source, String key){
if(key.length() < 2) return source;
else {
StringBuffer[] matrix = new StringBuffer[key.length()];
for(int i = 0; i < matrix.length; i++) matrix[i] = new StringBuffer();
int j = 0;
for(int i = 0; i < source.length(); i++) {
matrix[(Character.getNumericValue(key.charAt(j))) - 1].append(source.charAt(i));
if(++j == key.length()) j = 0;
}
StringBuilder target = new StringBuilder();
for (int i = 0; i < key.length(); i++){
target.append(matrix[i].toString());
}
return target.toString() ;
}
}
public static String decrypt(String source, String key){
if(key.length() < 2) return source;
else {
StringBuffer[] matrix = new StringBuffer[key.length()];
for(int i = 0; i < matrix.length; i++) matrix[i] = new StringBuffer();
int j = 0;
for(int i = 0; i < key.length(); i++) {
if(source.length() % key.length() != 0 && key.indexOf(Integer.toString(i + 1)) + 1 <= source.length() % key.length())
matrix[i].append(source.substring(j, j + source.length() / key.length() + 1));
else matrix[i].append(source.substring(j, j + source.length() / key.length()));
if(source.length() % key.length() != 0 && key.indexOf(Integer.toString(i + 1)) + 1 <= source.length() % key.length())
j += source.length() / key.length() + 1;
else j += source.length() / key.length();
}
StringBuilder target = new StringBuilder();
int k = 0;
for (j = 0; j < source.length() / key.length() + 1; ++j) {
for (int i = 0; i < key.length(); i++) {
target.append(matrix[Character.getNumericValue(key.charAt(i)) - 1].toString().charAt(j));
if (++k >= source.length()) break;
}
if (k >= source.length()) break;
}
return target.toString();
}
}
}
/
Рис. 1. Процес кодування тексту
/
Рис. 2. Текст після декодування
Висновок
На даній лабораторній роботі я ознайомився з основами класичної техніки шифрування – перестановочними шифрами, також я розробив програмну реалізацію перестановочного шифру що використовує перестановки стовпців.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!