Одноразовые блокноты
Ознакомление на практике с принципом действия одноразового блокнота. Описание принципов работы программного пакета MatLab 7.12.0 (R2011A). Перевод чисел из формата с плавающей запятой в целочисленный формат. Общие правила построения гистограммы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 25.04.2016 |
Размер файла | 1,2 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Лабораторная работа
Одноразовые блокноты
Цель работы: Ознакомиться на практике с принципом действия одноразового блокнота. Используя MatLab, исследовать данную задачу.
Оборудование: Программный пакет MatLab 7.12.0 (R2011A)
Ход работы
1. Сгенерируйте одноразовый блокнот (массив случайных чисел), длиной 10 000 000 байт. Используйте для этого функцию rand матлаба.
2. Растяните полученные случайные числа с интервала 0..1 на интервал 0..255. Переведите числа из формата с плавающей запятой в целочисленный формат. Воспользуйтесь для этого функцией uint8.
3. Постройте гистограмму распределения значений полученного одноразового блокнота. Воспользуйтесь функцией hist. Постройте гистограмму с 256-ю столбиками. Включите гистограмму в отчет о проведенной работе
Функция X = rand(n) формирует массив размера n х n, элементами которого являются случайные величины, распределенные по равномерному закону в интервале (0, 1).
В данном случае используемые 1500 типа double приблизительно равны 10 000 000 байт (81500). rand по умолчанию формирует массив типа double.
4. Сохраните одноразовый блокнот в файл (используйте функции "fopen", "fwrite", "fclose"). Попытайтесь сжать его программой WinRAR или WinZip. Какой коэффициент сжатия был получен? Включите в отчет о проведенной работе точные размеры файла до и после сжатия. Объясните полученные результаты.
Масив записанный в файл:
После небольшого преобразования:
Исходный размер файла:
блокнот программный число гистограмма
Размер архива:
5. Создайте переменную типа строка и занесите туда свои ФИО. Например, s='Пономаренко Николай Николаевич'; Преобразуйте эту строку в целочисленный формат (функция "uint16"). Закодируйте полученный массив сформированным одноразовым блокнотом (используйте функцию bitxor матлаба). Включите в отчет исходную строку, ее целочисленное представление и результат кодирования одноразовым блокнотом. Декодируйте закодированную строку одноразовым блокнотом. Преобразуйте полученный массив обратно в текстовый вид (используйте функцию char матлаба). Выведите результат на экран. Восстановилась ли исходная строка?
Переменная типа строка S:
Целочисленное представление строки, записаное в блокнот:
Результат кодирования блокнотом:
Декодированая строка, уже переведённая в char:
Операция XOR -логического исключающего ИЛИ выполняется побитово. Для этого нам было необходимо преобразовать строку к целочисленному виду. Операция XOR, является обратной самой себе, поэтому мы не использовали никаких дополнительных функций для дешифрования.
Для шифрования мы использовали кусок ранее созданного одноразового блокнота. Ключом к шифрованию является блокнот.
6. Добавьте к ФИО еще и номер группы. Например, s='Пономаренко Николай Николаевич 539'; Закодируйте и декодируйте эту строку аналогично действиям, описанным в пункте 5, но с использованием другого фрагмента одноразового блокнота. Включите полученные результаты в отчет
Используется другой фрагмент одноразового блокнота. Переменная:
Шифрованое сообщение в числовом представлении:
Шифр в строковом представлении:
Дешифрованое сообщение в представление целочисленном
Дешифрованое сообщение в представлении char:
Deshyfr в первом случае (без номера группы) и deshyfr во втором случае имеют общими первые 28 битов (ФИО). Shyfr - ы же разняться, так как мы использовали разные фрагменты одноразового блокнота, а соответственно и шифровали разными ключами.
Листинг программы:
1. a = 0; b = 250; % Для растягивания интервала
2. x = a + (b-a) * rand(1500);
3. y=uint8(x); % Избавляемся от плавающей запятой
4. hist(x, 256);
5. A=fopen('D://1.txt', 'w');
6. dlmwrite('D://1.txt',y); % Записали массив в блокнот
7. fclose(A); % Закрыли блокнот
8. S = 'Chenska Valentyna Albertovna';
9. Str = uint16(S); % Перевели строку в целочисленный
10. y = fopen('1.txt','w');
11. A = fread(y);
12. p=y(1:27); % Выделили фрагмент блокнота для ключа
13. shyfr=bitxor(Str,p);
14. shyfr2=char(shyfr);
15. deshyfr=bitxor(shyfr,p); % Расшифровали той же операцией
16. deshyfr2=char(deshyfr);
17. B=fopen('D://b.txt', 'w');
18. dlmwrite('D://b.txt',Str); % Тут строка целочисленная
19. A=fopen('D://a.txt', 'w');
20. dlmwrite('D://a.txt',shyfr); % Тут код в таком же формате
21. S='Chenska Valentyna Albertovna 004';
22. Str=uint16(S);
23. p2=y(30:61); % Взяли другой фрагмент блокнота
24. shyfr=bitxor(Str,p2);
25. shyfr2=char(shyfr);
26. deshyfr=bitxor(shyfr,p2);
27. deshyfr2=char(deshyfr);
Размещено на Allbest.ru
Подобные документы
Основные форматы данных и их представление. Запись чисел в формат с плавающей точкой. Вычитание чисел в формате с плавающей точкой. Регистры операндов и результата, размером формата числа с плавающей точкой, двойной точности. Поля смещённого порядка.
курсовая работа [78,9 K], добавлен 09.09.2014Выполнение операции деления в ЭВМ. Умножение чисел, представленных в форме с плавающей запятой. Методы ускорения операции умножения. Матричный метод умножения. Деление чисел в машинах с плавающей запятой. Деление чисел с восстановлением остатков.
реферат [49,4 K], добавлен 18.01.2011Определение граничных значений параметров, принципов организации из математического пакета программ MatLab. Реализация принципов управляемости и наблюдаемости. Основные методы параметрического оценивания. Реализация принципов идентификации и адекватности.
курсовая работа [2,3 M], добавлен 24.06.2013Синтез множительного устройства для умножения чисел с плавающей запятой, представленных в двоично-четверичной системе счисления. Перевод сомножителей из десятичной системы счисления в четверичную. Затраты на умножение шестиразрядных сомножителей.
курсовая работа [133,5 K], добавлен 06.10.2011Общие сведения о языке программирования Matlab. Функции работы с векторами и матрицами. Операторы условных переходов. Построение двумерных графиков. Построение гистограммы изображения. Функции его преобразования и зашумления, метрики определения качества.
лабораторная работа [853,5 K], добавлен 25.10.2015Анализ двоичной, восьмеричной и шестнадцатеричной систем счисления и перевода десятичных чисел. Форматы хранения чисел с плавающей точкой. Программа для преобразования массива констант в формат числа с плавающей точкой на эмуляторе микро-ЭВМ СМ-1800.
курсовая работа [266,9 K], добавлен 24.12.2013Проектирование цифрового автомата для выполнения арифметической операции деления двоичных чисел, алгоритм работы. Числа с плавающей запятой. Типы элементов памяти управляющего автомата JK-триггер, не имеющего запрещенных состояний на основных входах.
курсовая работа [747,4 K], добавлен 25.03.2012Общая информация о графическом формате. Описание формата Microsoft Windows Bitmap. Структура файла DDВ исходного формата ВМР. Преобразования графических файлов. Просмотр и редактирование растровых изображений. Создание многодокументного приложения.
дипломная работа [1,5 M], добавлен 06.06.2010Тестирование арифметико-логического блока процессора на уровне двоичных форм представления данных типовыми программными средствами ЭВМ. Рассмотрение основ сложения и вычитания чисел с плавающей запятой. Описание логического и текстового типа данных.
курсовая работа [1,4 M], добавлен 13.12.2014Изучение принципа работы цифрового автомата для сложения двоичных чисел, представленных в форме с фиксированной запятой, на базисе алгебры Буля. Правила построения операционных и функциональных схем отдельных устройств, логических систем и функций.
курсовая работа [1,2 M], добавлен 24.01.2014