|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#16
|
||||
|
||||
Приоткрою небольшую тайну... ключ - последовательность нулей и единиц - можно генерировать из пароля по-разному. Например, числа (номера символов) умножать, возводить в степень, делить, и производить любые действия над ними. И ключ, и его участки можно разворачивать задом наперёд... И это может сильно запутать алгоритм получения исходных данных.
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj Последний раз редактировалось PhoeniX, 22.06.2010 в 17:08. |
#17
|
||||
|
||||
Можно, но это все вычисляется...
Пока есть явная связь пароля и ключа все умножения, деления и т.п. не имеет значения... Какая разница написано так: X = 2+2*2 или так X = 6 Вот так связь потеряется Символ й код 233 --> 2+3+3 = 8 т.к. Символ ы код 251 --> 2+5+1 = 8 Пароль й и пароль ы выдают одно и тоже число, ксорят по своему... PS Я не претендую на звние умника года, или знатока шифров...данный опус просто размышления вслух и никоим образом не критика... Я за здоровое общение, и продуктивное сотрудничество... DJ PhoeniX, мне твоя программа очень понравлась, ничего лишнего и все на месте, но мое ИМХО, что нужно еще над ней работать (тестировать), работать и работать... В начале был Бит, потом Байт и только потом появилось Слово... |
#18
|
||||
|
||||
Цитата:
Ладно, не хочу разводить тему аля инфобос-2. Посмотрел твою прогу, вытащил кусок рисунка в котором были спрятаны данные, сделал вывод что о ВИ ты не слышал. Ладно... Начни пожалуй с изучения RC4. Мб чем-то поможет. |
#19
|
||||
|
||||
NIch, всё гораздо более сложнее - не только каждый символ, но и каждая позиция выдаёт уникальную последовательность (ну, или почти - точно не проверял, но алгоритм хорош ).
Да и к тому же, я уже сказал - ксор я влепил только для проверки, я буду писать свой алгоритм. А то, что зашифрованные данные легко вытащить - пока что да, но потом я ещё немного подзапутаю это дело... Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj Последний раз редактировалось PhoeniX, 22.06.2010 в 21:22. |
#20
|
||||
|
||||
Цитата:
Цитата:
В начале был Бит, потом Байт и только потом появилось Слово... |
#21
|
||||
|
||||
Готовые алгоритмы, оно конечно гуд, но если бы их можно было легко переделать под операции с "array of boolean"...
Я сейчас занят другим: поиском функции для преобразования систем счисления (с основаниями 2 и 10) с использованием только строк или массивов, без использования числовых переменных. Просто, теоретически, программа должна шифровать числа любой длины (номера счетов, цифровые коды, например...), но сейчас она отказывается делать это на определённых значениях... для шифра номера телефона, кошелька WebMoney или ещё чего-нибудь, конечно, хватит, но хочется идеальной работы... Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#22
|
|||
|
|||
Взяли строку чисел.
Разбили ее по N символов. Перевели в M целых чисел. Отконвертили. Склеили результат. Единственное, при конвертации надо добавить ведущих нулей для того, что бы кортежи были одинаковой длинны. |
#23
|
||||
|
||||
Да на пальцах, бумаге и схемах получается, а в коде... Два дня имел себе мозг - ничего не вышло.
Только не два дня по пять минут в перерывах между едой, пляжем и сном, а два полноценных дня, с 10 утра до 10 вечера, с перерывами на чай и перекур... Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#24
|
|||
|
|||
На (около 30 минут потратил ):
Код:
function Str_IntToBin(AIn : String) : String; var I, J, N : Integer; begin For I := 1 To Length(AIn) Do If Not (AIn[i] In ['0'..'9']) Then Raise Exception.Create('Input string contains nonnumber characters.'); Result := ''; For I := Length(AIn) DownTo 1 Do Begin N := Ord(AIn[i]) - Ord('0'); For J := 1 To 4 Do Begin If (N And 1) = 0 Then Result := '0' + Result Else result := '1' + Result; N := N Shr 1; End; end; end; function Str_BinToInt(AIn : String) : String; var I, N : Integer; Quad : String; begin If Length(AIn) Mod 4 <> 0 Then Raise Exception.Create('Input string contains wrong number of characters.'); For I := 1 To Length(AIn) Do If Not (AIn[i] In ['0'..'1']) Then Raise Exception.Create('Input string contains nonnumber characters.'); Result := ''; While AIn <> '' Do Begin N := 0; Quad := Copy(AIn,1,4); For I := 1 To Length(Quad) Do Begin N := N Shl 1; If Quad[i] = '1' Then N := N Or 1; End; Result := Result + Chr(N + Ord('0')); AIn := Copy(AIn,5,Length(AIn)-4); End; end; |
#25
|
||||
|
||||
Проверил... ввожу 15, получаю "00010101". Чёто не то...
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#26
|
||||
|
||||
И зачем это?
Любую информацию можно записать в байтах, будь то числа, буквы или китайские иероглифы, хоть египетские, хоть клинопись. А байты потом уже шифровать. |
#27
|
||||
|
||||
Для текста и файлов так и делается. А числа гораздо компактнее записывать битовой последовательностью. Сравни - 1 байт может быть вариантом 256 позиций, а 1 символ - число от нуля до 9 = 10 позиций.
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#28
|
||||
|
||||
Есть такая штука как избыточность,энтропия.
нельзя прыгнуть выше головы. Сожми строку в архиваторе и получишь опять те же байты. |