
- •VStepanov.CourseWork.First Common.Cs
- •VStepanov.CourseWork.First.Binary BmpInfo.Cs
- •ByteMixer.Cs
- •Relocator.Cs
- •VStepanov.CourseWork.First.Cryptography
- •XorCodec.Cs
- •VStepanov.CourseWork.First.Steganography Steganogram.Cs
- •SteganogramBmp.Cs
- •SteganogramInfo.Cs
- •SteganogramMessage.Cs
- •VStepanov.CourseWork.First.Gui AnimatedForm.Cs
- •FileAddForm.Cs
- •GuiMethods.Cs
- •PasswordRequest.Cs
- •Program.Cs
- •SplashForm.Cs
- •TextAddForm.Cs
- •TextReadForm.Cs
- •Лист регистрации изменений
|
|
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ «ВЫСШАЯ ШКОЛА ЭКОНОМИКИ» Факультет Бизнес-информатики, отделение Программной инженерии Кафедра Управление разработкой программного обеспечения |
|||
СОГЛАСОВАНО Профессор Национального исследовательского университета «Высшая школа экономики», доктор наук
__________________ Гостев И.М. «__» 2013 г.
|
|
УТВЕРЖДАЮ Заведующий кафедрой управления и разработки программного обеспечения Национального исследовательского университета «Высшая школа экономики»
__________________ Авдошин С.М. «__» 2013 г.
|
|||
ПРОГРАММА СТЕГАНОГРАФИЧЕСКОГО СОКРЫТИЯ ИНФОРМАЦИИ В НЕУПАКОВАННЫХ ФАЙЛАХ ИЗОБРАЖЕНИЙ В ФОРМАТАХ БЕЗ СЖАТИЯ Текст программы
|
|||||
Подп. и дата |
|
ЛИСТ УТВЕРЖДЕНИЯ RU.17701729.503200-12-01 |
|||
Инв. № дубл. |
|
|
|||
Взам. инв. № |
|
|
Исполнитель Студент группы 172ПИ Национального исследовательского университета «Высшая школа экономики» __________________ Степанов В.С. «__» 2013 г.
|
||
Подп. и дата |
|
|
|||
Инв. № подл. |
|
2013
|
|||
|
|
УТВЕРЖДЕНО RU.17701729.503200-12-01
ПРОГРАММА СТЕГАНОГРАФИЧЕСКОГО СОКРЫТИЯ ИНФОРМАЦИИ В НЕУПАКОВАННЫХ ФАЙЛАХ ИЗОБРАЖЕНИЙ В ФОРМАТАХ БЕЗ СЖАТИЯ Текст программы
Листов 55
Руководитель работы: профессор Национального исследовательского университета «Высшая школа экономики», доктор наук _____________________ /Гостев И.М./ «____»_______________________ 2013 г.
Исполнитель: студент группы 172ПИ ___________________ /Степанов В.С./ «____»_______________________ 2013 г |
|||
Подп. и дата |
|
||||
Инв. № дубл. |
|
||||
Взам. инв. № |
|
||||
Подп. и дата |
|
||||
Инв. № подл. |
|
2013
Содержание
VStepanov.CourseWork.First 3
Common.cs 3
VStepanov.CourseWork.First.Binary 4
BmpInfo.cs 4
ByteMixer.cs 6
Relocator.cs 7
VStepanov.CourseWork.First.Cryptography 9
XorCodec.cs 9
VStepanov.CourseWork.First.Steganography 11
Steganogram.cs 11
SteganogramBmp.cs 14
SteganogramInfo.cs 17
SteganogramMessage.cs 19
VStepanov.CourseWork.First.Gui 24
AnimatedForm.cs 24
FileAddForm.cs 38
GuiMethods.cs 41
PasswordRequest.cs 49
Program.cs 49
SplashForm.cs 50
TextAddForm.cs 52
TextReadForm.cs 54
ЛИСТ РЕГИСТРАЦИИ ИЗМЕНЕНИЙ 56
VStepanov.CourseWork.First Common.Cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
[assembly: CLSCompliant(true)]
namespace VStepanov.CourseWork.First
{
/// <summary>
/// Класс, содержащий константы, общие для всего проекта.
/// </summary>
public static class CommonConstants
{
/// <summary>
/// Число бит в байте.
/// </summary>
public const int BitsInByte = 8;
/// <summary>
/// Число последних бит для хранения информации о стеганограмме.
/// </summary>
public const int nLastBitsUsingForInfo = 1;
/// <summary>
/// Сигнатура стеганограммы, четыре бита: 0x53, 0x54, 0x45, 0x47.
/// "STEG" в ACSII/UTF8 кодировке.
/// </summary>
public const int SteganographicalSignature = 0x53544547; //"STEG" in ASCII/UTF8 encoding
/// <summary>
/// Желаемое число FPS (Frames per second, кадров в секунду) для прорисовки анимаций интерфейса.
/// </summary>
public const int InterfaceFps = 90;
}
/// <summary>
/// Класс, содержащий методы, общие для всего проекта.
/// </summary>
public static class CommonMethods
{
/// <summary>
/// Рассчитывает число байт контейнера, необходимых для хранения одного байта
/// сообщения, используя указанное число последних бит в каждом.
/// </summary>
/// <param name="nLastBitsUsing">Число последних бит, используемых для записи сообщения.</param>
/// <returns>Число байт контейнера, необходимых для хранения одного байта
/// сообщения, используя указанное число последних бит в каждом.</returns>
public static int GetPartsCount(int nLastBitsUsing)
{
int parts = CommonConstants.BitsInByte / nLastBitsUsing +
(CommonConstants.BitsInByte % nLastBitsUsing > 0 ? 1 : 0);
return parts;
}
/// <summary>
/// Обобщённый метод, расширяющий массив до необходимого размера.
/// </summary>
/// <typeparam name="T">Тип элементнов массива.</typeparam>
/// <param name="originalArray">Массив, подлежащий расширению.</param>
/// <param name="countOfRepeats">Количество полных повторов массива.</param>
/// <param name="remainder">"Хвост"</param>
/// <returns>Массив, расширенный до необходимого размера.</returns>
public static T[] ExpandArray<T>(T[] originalArray, int countOfRepeats, int remainder)
{
if (remainder > originalArray.Length)
{
throw new ArgumentOutOfRangeException(paramName: "remainder");
}
int length = originalArray.Length * countOfRepeats + remainder;
if (length < 0)
{
throw new ArgumentException("Длинна получаемого массива должна быть неотрицательным числом.", "countOfRepeats, remainder");
}
T[] res = new T[length];
Parallel.For(0, countOfRepeats, i => Array.Copy(originalArray, 0, res, i * originalArray.Length, originalArray.Length));
Array.Copy(originalArray, 0, res, countOfRepeats * originalArray.Length, remainder);
return res;
}
}
}