Пользователь

Добро пожаловать,

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

Меню сайта




Ваше мнение
Как вы узнали о нашем сайте?

От друга, знакомого
Из печатных источников
Из поисковой машины
По ссылке с другого сайта
Случайно
Не знаю


Результаты
Другие опросы

Всего голосов: 1031
Комментарии: 4


Наши партнеры



Статистика




Programming books  Download software  Documentation  Scripts  Content Managment Systems(CMS)  Templates  Icon Sets  Articles  Contacts  Voting  Site Search




Книги-online



Криптография.
И в библиотеке бывают рекламные паузы.

Криптография.

Гаммирование. Скачать

Алгоритм предлагает простейший способ шифрования/дешифрования данных - гаммирование - наложение/снятие на открытые/зашифрованные данные криптографической гаммы, то есть некоторой последовательности элементов данных. Данный алгоритм в качестве гаммы использует ключ задаваемый в массиве Key. Для наложения гаммы при зашифровании и ее снятия при расшифровании должны использоваться взаимно обратные бинарные операции, в данном алгоритме в качестве такой операции используется "Исключающие ИЛИ" (побитовое сложение по модулю 2).

Для шифрования/дешифрования используется один и тот же алгоритм. Наверх

Алгоритм Blowfish. Скачать

Blowfish это 64-битный шифр разработанный Шнайером в 1993 году. Это шифр Файстела, и каждый проход состоит из зависимой от ключа перестановки и зависимой от ключа с данными замены. Все действия основаны на операциях XOR и прибавлениях к 32-битным словам. Ключ может иметь длину до 72 байт (остальная часть ключа в данной реализации не влияет на работу).

Процедура шифрования(дешифрования) состоит из двух этапов: 1) Инициализация массивов P и S при помощи ключа. 2) Непосредственно шифрование(дешифрование).

Инициализация массивов P и S реализована в блок-схеме initBlowfish.bls. На вход процедуры подается массив Key байтов ключа, размер массива Key передается в переменной n. В процедуре используется массив случайных величин RandomSeed, каждый из элементов которого имеет тип LongInt(= array [0..3] of byte). Следует заметить, что массив RandomSeed должен быть задан заранее и остается неизменным при шифровании(дешифровании). Использование массива RandomSeed не является обязательным, возможна инициализация массивов P и S случайными величинами напрямую.

Непосредственно шифрование осуществляется процедурой реализованной блок-схемой EncryptBlowfish.bls. Шифруются последовательно пары элементов Xl,Xr типа LongInt. При шифровке изменяется также содержание массивов P и S.

Операция дешифровки реализована в блок-схеме DecryptBlowfish.bls. Эта процедура аналогично дешифрует последовательно пары элементов Xl,Xr типа LongInt.

Таким образом, чтобы зашифровать/расшифровать некий массив 32-х битных величин, надо вначале инициализировать массивы (InitBlowfish) P и S, а затем последовательно подавать на вход процедуры шифровки(EncryptBlowfish)/дешифровки(DecryptBlowfish) пары элементов, при этом по ходу работы алгоритма шифрации/дешифрации массивы P и S будут постоянно изменяться.

Если данные блок-схемы напрямую экспортировать в Паскаль, они составят рабочий модуль шифровки/дешифровки на основе алгоритма Blowfish, но естественно не дадут слишком хороший результат по скорости работы. Желательно провести оптимизацию алгоритмов используя тот факт, что работа осуществляется с 32-битными величинами и следовательно можно существенно оптимизировать процедуры для машин c процессорами типа Pentium. Хотя следует заметить, что использование данных процедур напрямую, не вызвало видимой задержки при работе с файлами до 100 кбайт. Оптимизацию я оставляю Вам, свою же задачу я вижу в ознакомлении с данным алгоритмом. Наверх

Алгоритм дешифрации для архиватора bls. Скачать

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

Структурно процедура состоит из четырех частей. Первая часть, имеет вспомогательное значение, в ней создается CRC-таблица, используемая в дальнейшем для преобразования ключей дешифрации, а так же непосредственно инициализируются три 32-байтных ключа. Во второй части ключи преобразуются, используя пароль. В третий части происходит преобразование ключей с одновременной расшифровкой 12-байтного заголовка файла, на этом этапе можно осуществить проверку пароля, если известна контрольная сумма дешифруемого файла (zip хранит ее в незакодированном виде). И наконец последняя, четвертая часть в которой происходит непосредственно побайтная дешифрация данных, при этом дешифрованный байт замещает соответстующий байт в исходном массиве.

На вход процедуры подаются следующие данные: n - длина пароля, P- массив содержащий пароль, buffer- 12-байтный заголовок, m- длина дешифруемого массива, stream- массив байт, который необходимо расшифровать. На выходе получаем расшифрованные данные в массиве stream при этом размер массива остается тем же m.

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

Алгоритм подсчета CRC32. Скачать

Функция высчитывает CRC(Cyclic Redundancy Codes) для массива Stream длины N. Вначале по заданному параметру MagWord - определяющему полином расчета CRC строиться массив CRCTable, при помощи которого в дальнейшем производится расчет.

Дополнительно функции передается несколько параметров: InitCrc инициализирующие значение CRC, Inv показывает надо ли инвертировать полученное значение CRC перед выдачей результата.

При реализации использовались следующие функции: A shr B сдвиг бит двоичного представления числа A вправо на B разрядов, Xor и And побитовые операции, соответственно, "Исключающие ИЛИ" и "И", Byte(A) взятие младшего байта числа А. Знак доллара ($) перед числом указывает на то, что число представлено в шестнадцатеричной системе счисления.

Для примера известный архиватор Winzip использует для расчета CRC32 следующие параметры:

	MagWord = $EDB88320
	InitCRC = $FFFFFFFF
	Inv = True
Наверх


Внимание! Если у вас не получилось найти нужную информацию, используйте рубрикатор или воспользуйтесь поиском


.


книги по программированию исходники компоненты шаблоны сайтов C++ PHP Delphi скачать