ПАРАМЕТРЫ ДЛЯ ГЕНЕРАЦИИ КЛЮЧА (не нужны при расшифровке)
МОЩНОСТЬ СЛОВАРЯ >

КОЛИЧЕСТВО ТОЧЕК ШИФРОВАНИЯ >

ВОЗМОЖНЫЕ ЗНАЧЕНИЯ ПЕРЕСТАНОВОК (рекомендуется выбрать все) >

ИСПОЛЬЗУЕМЫЕ АЛГОРИТМЫ >
G (наложение гаммы)
R (перестановки)
D (использование словаря)

КЛЮЧ >


СООБЩЕНИЕ (Текст который необходимо зашифровать или расшифровать) >



Ожидается действие...

РЕЗУЛЬТАТ >



Что это?


Это алгоритм для шифрования / дешифрвоания текста или массива байт.
Этот алгоритм может использовать гамма-ключ, сдвигать байты (или блоки байт) и использовать словарь байт.

Как это работает?


В первую очередь, я хотел бы сказать, что все ключи и шифрованные сообщения также кодируются в специальный Base16-подобный код.
Реальный полный ключ выглядит так: 垏隹瑪ᦨ꜋쨩ߓ슇╪튐趼均恵㽫굿񇕭☔螼龫熻珁᪓ఐ菐≳󕾎껪삷-뿒븯媈떷ⱊ邺骉㤢菾쥩㲃󳑡ᔙ県큗쎴㻩欴嗆᱇򱆹-R256GDR16
Вы можете видеть эти пунктирные линии (красные "-")? Они разделяют ключ на три части.
Первая часть (зеленый) - это гамма-ключ. Это массив 512 бит или 32 символов (каждый символов это 2 байта, или 2 ^ 16 бит).
Вторая часть (синий) - это словарь. На самом деле, это двойной массив битов. Он заменяет одну последовательность битов на другую.
И последняя часть (фиолетовый) - это алгоритм ... да, этот алгоритм не имеет фиксированного ... алгоритма :) Последняя часть это сочетание следующих команд: G (gamma) R (rearrange) D (dictionary). Каждая команда указывает что делать. R, к тому же, имеет число(2, 4, 128 и e.t.c) - это длина последовательности битов для перемещения.

Немного о гамма-ключа ...


Кроме того, я должен сказать, что все в алгоритме является последовательность бит.
Таким образом, гамма-ключ тоже. Как я писал выше, каждый символ - это два байта или 16 бит. И, кроме того, 512 бит - это основные блоки крипто-текста текста.
Гамма-ключ добавляется к сообщению методом XOR. То есть если бит ключа равен 1 и бит сообщения равен 1, то результат равен 0.
Например, сообщение = 10110011 и ключ = 1101. 1011 XOR 1101 = 0110, и весь крипто-текст равен 01101000

как работает словарь?


Например мы имеем следующую последовательность битов: 10011101 и словарь: 1001 -> 1111; 1101 -> 0000 ... Я думаю, что вы понимаете :)
... Ну, собственно, это всё что вы должны знать о словаре :)

как работает команда rearrange (R)?


И опять же ... мы имеем некоторые биты: 10011010 и используем команду "R2", то мы получим 01101010. Как вы можете видеть, первая пара битов идёт в конец, а другие биты сдвигаются влево.

что это "R256GDR16" ...?


... Это последовательность команд для шифратора.
Вы можете представить примерную работу глянув на последнюю строку раздела "Как это работает?".

Спасибо за то что потеряли своё время :)


... Но, вы можете нажать правую кнопку мыши и выберать "Просмотр исходного кода", что бы использовать этот шифратор в своих проектах.
Ниже приведу API шифратора:
	// БАЗОВЫЕ МЕТОДЫ
	//
	// bits[] numberToBits(number [, number]) - получает число и возвращает массив бит длинной в 16 [если задано второе число: 0 - обрезаются незначащие нули числа, иное положительное - биты выравниваются по количеству]
	// number bitsToNumber(bits[]) - получает массив бит и возвращает десятичное число
	// object[] arrMerge(object1[], object2[]) - "склеивает" два одномерных массива
	// bits[] numbersToBits(number[]) - возвращает массив бит получая массив десятичных чисел (16 бит на число. Диапазон 0-2^16)
	// number[] bitsToNumbers(bits[]) - возвращает массив чисел получая массив бит
	// bits[] stringToBits(string) - возвращает массив бит для символов строки
	// string bitsToString(bits[]) - формирует строку из массива бит
	//
	// КРИПТО-ЧАСТЬ
	//
	// callback - некоторые функци в конце имеют данный аргумент. Это функция обратного вызова. Получает при каждом вызове общий процент выполненой задачи (0-100)
	//
	// bits[] to512Multiply(bits[]) - принимает биты сообщения, делает их количество кратным 512 и добавляет в начало сообщения 512 бит - число указывающее на количество мусорных символов с конца
	// bits[] from512Multiply(bits[]) - принимает массив битов кратный 512 и снимает кратность
	// bits[] applyGamma(bits1[], bits2[], callback) - принимает биты сообщения и 512 битов гаммы-ключа которые применяет методом XOR к сообщению (таким образом может использоваться как для шифрования, так и расшифрования)
	// bits[] rearrange(bits[], number, callback) - производит перестановку "вперёд" блоков длинны number местами. number должен быть кратен длинне массива битов
	// bits[] rearrangeBack(bits[], number, callback) - производит перестановку обратную rearrangeForward "назад", что позволяет отменить влияние вышеописанной функции, аргументы аналогичны
	// bits[] replaceFromDictionary(bits[], bits[][], callback) - меняет цепочки бит по словарю. Принимает биты и двумерный массив с массивами бит которые необходимо заменить
	// bits[] replaceFromDictionaryBack(bits[], bits[][], callback) - расшифровывает сообщение принимая те же аргументы что и функция выше.
	//
	// ФУНКЦИИ ВЕРХНЕГО УРОВНЯ
	//
	// bits[][] generateDictionary(number) - вернёт двумерный массив - случайно сгенерированый словарь с заданой длинной цепочек бит (рекомендуемые значения: 4 - 9 (можно и больше, но там либо комп взрывается, либо выход за 512 бит (что дэфолт для блока шифра))
	// string dictionaryToString(bits[][]) - упаковывает двумерный массив словаря в текстовую строку
	// bits[][] stringToDictionary(string) - распаковывает строку в словарь
	// string generateKey() - возвращает случайный 512 битный ключь (32 символа)
	// string getCommands() - возвращает строку со случайными командами шифрования типа GR4DR128
	//
	// ФУНКЦИИ ВЫСШЕГО УРОВНЯ
	//
	// string getFullKey() - возвращает случайный сгенерированый ключ
	// string[] getKeyParts(string) - возвращает одномерный массив размером в 3 ячейки состоящий из частей ключа
	// string[][] stringToCommands() - возвращает представление комманд в виде двумерного массива (GDR128)
	// bits[] encrypt(bits[], bits[], bits[][], string[][], callback) - возвращает полностью зашифрованный массив битов используя 512-битную гамму ключа, словарь замены и двумерный массив - алгоритма шифрования
	// bits[] decrypt(bits[], bits[], bits[][], string[][], callback) - возвращает полностью расшифрованный и готовый к переводу в сообщение массив битов, аргументы аналогичны вышеописанной функции
	// string encryptFast(string, string, callback) - принимает строку сообщения и строку полного ключа, возвращает зашифрованный текст (не рекомендуется к использованию, лишние расходы производительности на конвертацию типов)
	// string decryptFast(string, string, callback) - аналогична функции выше.
	// string stringToBase16(string) - принимает обычную строку в формате UTF-16 и представляет её в виде 16-ричной системы счисления, по 4 символа на один символ строк UTF-16. Удобно при передаче методом GET.
	// string base16ToString(string) - выплняет обратную вышеописанной функци функцию.


LIMIDE DEV
INFORMATION SECURITY BRANCH
LIGAME-512 (creepter) ALGORITHM
VK page of developer (http://vk.com/jkulvich)