Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Разное > Ваши программы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 22.06.2010, 17:05
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Приоткрою небольшую тайну... ключ - последовательность нулей и единиц - можно генерировать из пароля по-разному. Например, числа (номера символов) умножать, возводить в степень, делить, и производить любые действия над ними. И ключ, и его участки можно разворачивать задом наперёд... И это может сильно запутать алгоритм получения исходных данных.
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj

Последний раз редактировалось PhoeniX, 22.06.2010 в 17:08.
Ответить с цитированием
  #17  
Старый 22.06.2010, 17:28
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

Можно, но это все вычисляется...
Пока есть явная связь пароля и ключа все умножения, деления и т.п. не имеет значения...
Какая разница написано так:
X = 2+2*2 или так
X = 6
Вот так связь потеряется
Символ й код 233 --> 2+3+3 = 8
т.к.
Символ ы код 251 --> 2+5+1 = 8
Пароль й и пароль ы выдают одно и тоже число, ксорят по своему...
PS Я не претендую на звние умника года, или знатока шифров...данный опус просто размышления вслух и никоим образом не критика...
Я за здоровое общение, и продуктивное сотрудничество...
DJ PhoeniX, мне твоя программа очень понравлась, ничего лишнего и все на месте, но мое ИМХО, что нужно еще над ней работать (тестировать), работать и работать...
__________________
В начале был Бит, потом Байт и только потом появилось Слово...
Ответить с цитированием
  #18  
Старый 22.06.2010, 17:45
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

Цитата:
Сообщение от DJ PhoeniX
запутать алгоритм
Скольких уже видел доморощенных гениев-криптографов, но поражает другое: мыслят все одинаково. Пишешь разным людям, а такое чувство что одному и тому же человеку...

Ладно, не хочу разводить тему аля инфобос-2.

Посмотрел твою прогу, вытащил кусок рисунка в котором были спрятаны данные, сделал вывод что о ВИ ты не слышал.

Ладно... Начни пожалуй с изучения RC4. Мб чем-то поможет.
Ответить с цитированием
  #19  
Старый 22.06.2010, 21:19
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

NIch, всё гораздо более сложнее - не только каждый символ, но и каждая позиция выдаёт уникальную последовательность (ну, или почти - точно не проверял, но алгоритм хорош ).
Да и к тому же, я уже сказал - ксор я влепил только для проверки, я буду писать свой алгоритм. А то, что зашифрованные данные легко вытащить - пока что да, но потом я ещё немного подзапутаю это дело...
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj

Последний раз редактировалось PhoeniX, 22.06.2010 в 21:22.
Ответить с цитированием
  #20  
Старый 22.06.2010, 22:28
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

Цитата:
я буду писать свой алгоритм
ИМХО лучше использовать готовые алгоритмы, они давно обоснованы математически и испытаны на прочность...
Цитата:
я ещё немного подзапутаю это дело
Это правильно, программа работает хорошо только снаружи, нужно, чтобы и внутри было все тип топ...
__________________
В начале был Бит, потом Байт и только потом появилось Слово...
Ответить с цитированием
  #21  
Старый 22.06.2010, 22:41
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Готовые алгоритмы, оно конечно гуд, но если бы их можно было легко переделать под операции с "array of boolean"...
Я сейчас занят другим: поиском функции для преобразования систем счисления (с основаниями 2 и 10) с использованием только строк или массивов, без использования числовых переменных. Просто, теоретически, программа должна шифровать числа любой длины (номера счетов, цифровые коды, например...), но сейчас она отказывается делать это на определённых значениях... для шифра номера телефона, кошелька WebMoney или ещё чего-нибудь, конечно, хватит, но хочется идеальной работы...
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #22  
Старый 22.06.2010, 22:45
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Взяли строку чисел.
Разбили ее по N символов.
Перевели в M целых чисел.
Отконвертили.
Склеили результат.

Единственное, при конвертации надо добавить ведущих нулей для того, что бы кортежи были одинаковой длинны.
Ответить с цитированием
  #23  
Старый 22.06.2010, 22:54
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Да на пальцах, бумаге и схемах получается, а в коде... Два дня имел себе мозг - ничего не вышло.
Только не два дня по пять минут в перерывах между едой, пляжем и сном, а два полноценных дня, с 10 утра до 10 вечера, с перерывами на чай и перекур...
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #24  
Старый 22.06.2010, 23:25
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

На (около 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  
Старый 23.06.2010, 12:02
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Проверил... ввожу 15, получаю "00010101". Чёто не то...
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #26  
Старый 23.06.2010, 13:47
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

И зачем это?
Любую информацию можно записать в байтах, будь то числа, буквы или китайские иероглифы, хоть египетские, хоть клинопись.
А байты потом уже шифровать.
Ответить с цитированием
  #27  
Старый 23.06.2010, 16:26
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Для текста и файлов так и делается. А числа гораздо компактнее записывать битовой последовательностью. Сравни - 1 байт может быть вариантом 256 позиций, а 1 символ - число от нуля до 9 = 10 позиций.
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #28  
Старый 23.06.2010, 17:02
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

Есть такая штука как избыточность,энтропия.
нельзя прыгнуть выше головы.

Сожми строку в архиваторе и получишь опять те же байты.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:53.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter