Изобретен и реализован в виде программы способ шифрования файлов случайными байтами. Каждый байт файла пользователя замещается случайным байтом из множества, насчитывающего свыше 10 в степени миллион (1 и миллион нулей) элементов. Пароли - произвольные по размеру и содержанию файлы. Произвольные сочетания открытых и закрытых паролей. Каждый закрытый пароль имеет три произвольных открытых пароля: гимн, герб и флаг пользователя. Файлы, зашифрованные открытыми пароля, расшифровываются только соответствующими закрытыми паролями. Иерархия паролей (до 6 уровней). Отвечу на любые вопросы.
Алгоритм шифрования. Для шифрования нужно найти источник, откуда можно брать байты для замены байтов файла пользователя. Возникла идея: создавать строки случайных байтов и их использовать для шифрования. Для однозначности используются строки длиной 256 байт, состоящие из всех 256 байт. Строки различаются взаимным расположением одних и тех же 256 байт. Количество таких строк исчисляется как факториал от 256, что превышает 10 в степени 506. Каждый байт в файле пользователя имеет две координаты: место расположения в файле и величину от 0 до 255. Процесс зашифровки состоит в следующем: из случайной строки берется байт по номеру, равному величине исходного байта плюс 1, и вставляется на место исходного байта. Процесс расшифровки состоит в следующем: в строке, использованной для зашифровки, ищется байт, равный байту в зашифрованном файле. Номер этого байта, уменьшенный на 1, есть исходный байт. Поскольку в случайных строках все байты обязательно встречаются ровно по одному разу, то процессы шифрования и расшифровки однозначны. Подсчет количества вариантов. Строки, используемые для шифрования, различаются взаимным расположением одних и тех же 256 байт. Количество таких строк исчисляется как факториал от 256, что превышает 10 в степени 506. Количество применяемых строк достигает 2000 (можно и более). Строки генерируются случайным образом. Поэтому общее количество вариантов исчисляется в виде биноминального коэффициента, в числителе которого 10 в степени 506, а в знаменателе факториал от 2000. Числитель вычисляется в виде произведения 2000 чисел вида (10 в степени 506 – 0, 1, 2, …, 199). Каждый сомножитель можно считать приближенно равным числу 10 в степени 506. Тогда числитель равен 10 в степени 1 012 000. Знаменатель – факториал от 2000 равен 10 в степени 6000. Таким образом, общее количество вариантов 10 в степени 1006000, то есть превышает 1 и миллион нулей. Привожу исходный код процедуры на языке Visual Basic 6.00, осуществляющей зашифровку и расшифровку. Кстати, процессы зашифровки и расшифровки симметричны и используются программой случайно в каждом процессе шифрования. Попробуйте сами уложить Ваши знания в приведенный процесс шифрования (расшифровки). Public Sub cs591(cs244 As Integer, cs351 As String, Optional cs236 As String, Optional cs389 As String) Dim cs261 As Integer, cs042 As Integer, cs101 As Integer, cs009 As Long Dim cs394 As Integer, cs110 As Integer, cs326 As Integer, cs149 As Integer, cs086 As Integer Select Case cs244 Case 0, 1 cs394 = UBound(cs875) cs042 = LenB(cs351) cs261 = LenB(cs236) For cs326 = 1 To cs042 cs149 = cs326 Mod cs261 + 1 cs110 = AscB(MidB(cs236, cs149, 1)) cs009 = CLng(cs110 + 1) cs110 = AscB(MidB(cs389, cs149, 1)) cs009 = cs009 * CLng(cs110 + 1) cs101 = cs009 Mod cs394 + 1 Select Case cs244 Case 0 cs086 = InStrB(cs875(cs101), MidB(cs351, cs326, 1)) MidB(cs351, cs326, 1) = ChrB(cs086 - 1) Case Else cs086 = AscB(MidB(cs351, cs326, 1)) MidB(cs351, cs326, 1) = MidB(cs875(cs101), cs086 + 1, 1) End Select Next cs326 Case Else End Select End Sub Случайная величина генерируется по следующему алгоритму: Randomize Timer cs001 = Int(20000*Rnd) + 10000 cs001 = cs001 Mod 256 Попробуйте дважды сгенерировать одинаковые случайные строки.
2 nik-andrejchikov Попробуйте сравнить Ваш алгоритм шифровния с существующими симметричными алгоритмами. Например, AES или DES (3DES) Докажите что Ваш лучше по критерию "стойкость ко взлому"/"вычислительные затраты". Пока же это все напоминает "изобретение" трехколесного велосипеда сработанного из чугуна с деревянными гайками. Который хочет соревноваться с автомобилями. p.s данный фрагмент показывает существенные пробелы в образовании. Особенно последняя строка. Прежде чем "изобретать" неплохо бы подучиться в области изобретения.