Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2011, 18:31   #1
CAMOBAP
Форумчанин
 
Регистрация: 07.12.2010
Сообщений: 115
По умолчанию xor шифрование (delphi)

Пишу программу в которой использую xor шифрование. Дело в том что надо шифровать несколько string переменных.Алгоритм надо применять к каждой или как то мо другому можно?Делаю по вот этому примеру
CAMOBAP вне форума Ответить с цитированием
Старый 09.01.2011, 18:44   #2
Ybn2
Форумчанин
 
Регистрация: 18.11.2010
Сообщений: 183
По умолчанию

Цитата:
Сообщение от CAMOBAP Посмотреть сообщение
Надо шифровать несколько string переменных.Алгоритм надо применять к каждой или как то мо другому можно?Делаю по вот этому примеру
Можешь к каждой строке, но ключ должен быть один для всех. А можешь все строки объединить в одну сплошную. Только как при расшифровки на строки делить будешь?
Ybn2 вне форума Ответить с цитированием
Старый 09.01.2011, 18:59   #3
CAMOBAP
Форумчанин
 
Регистрация: 07.12.2010
Сообщений: 115
По умолчанию

Вот тут натолкнули на идею запись все в одну строку и потом разделить при помощи спец символами
Цитата:
#13#10
.
А как скажем сделать два ключа? Что бы взломать сложней было.
CAMOBAP вне форума Ответить с цитированием
Старый 09.01.2011, 19:01   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну и правильно. шифрование на основе XOR - достаточно стойкое.
(а при соблюдении некоторых условий именно на основе XOR существует идеальный невзламываемый алгоритм шифрования - Шифр Вернама, для для которой доказана абсолютная криптографическая стойкость.).

Единственное, если задача вам позволяет, я бы рекомендовал Вам преобразовывать строки перед шифрованием, добавляя некоторое количество случайных символов. А потом, после дешифрации убирать этот мусор. (выделить мусор можно либо записав в начало строки количество мусора, либо поместим после мусора любой специальный знак - стоп-маркер).
Если интересно - приведу пример.

Ну и ещё.
В той реализации, что Вы использовали (по ссылке), длина ключа должна быть строго НЕ МЕНЬШЕ, чем длина шифруемой строки.
При желании можно использовать более короткие ключи, циклически. (т.е. когда дошли до последнего символа ключа, следующий раз берём опять первый и так по кругу, сделать это чрезвычайно просто:
Код:
ik := 1;
for i := 1 to length(text) do
  begin
    // XOR алгоритм
    toto := chr((ord(text[i]) xor ord(longkey[ik])));
    inc(ik);
    if ik>length(longkey) then ik := 1;
    result := result + toto;
  end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.01.2011, 19:04   #5
Ybn2
Форумчанин
 
Регистрация: 18.11.2010
Сообщений: 183
По умолчанию

Чтоб сложней взломать было, а еще лучше невозможно используй другой алгоритм!
А если хочешь 2 ключа, то шифруй дважды, первый раз по одному ключу, а второй раз уже полученную шифровку шифруй по второму ключу. И так сколько душе угодно!
Ybn2 вне форума Ответить с цитированием
Старый 09.01.2011, 19:09   #6
CAMOBAP
Форумчанин
 
Регистрация: 07.12.2010
Сообщений: 115
По умолчанию

Цитата:
Сообщение от Ybn2 Посмотреть сообщение
Чтоб сложней взломать было, а еще лучше невозможно используй другой алгоритм!
А если хочешь 2 ключа, то шифруй дважды, первый раз по одному ключу, а второй раз уже полученную шифровку шифруй по второму ключу. И так сколько душе угодно!
какой например?
CAMOBAP вне форума Ответить с цитированием
Старый 09.01.2011, 19:14   #7
Ybn2
Форумчанин
 
Регистрация: 18.11.2010
Сообщений: 183
По умолчанию

Цитата:
Сообщение от CAMOBAP Посмотреть сообщение
какой например?
Serge_Bliznykov привел пример Шифр Вернама.
А еще смотря для каких целей шифруется, если надо зашифровать пароль, то алгоритм MD5 неплохой и не взламываемый!
Ybn2 вне форума Ответить с цитированием
Старый 09.01.2011, 19:24   #8
CAMOBAP
Форумчанин
 
Регистрация: 07.12.2010
Сообщений: 115
По умолчанию

Интересно .Еще вопрос как можно записать строку в файл несколько раз. Скажем ввел в edit что то нажал на button,строка записалась,Edit очистился.и так несколько раз. и можно ли перед каждой строкой дописать ее номер?
CAMOBAP вне форума Ответить с цитированием
Старый 09.01.2011, 19:29   #9
Ybn2
Форумчанин
 
Регистрация: 18.11.2010
Сообщений: 183
По умолчанию

Можно, файл для записи не закрывай, а закроешь его при выходе из программы, и записывай в него сколько хочешь. А с номером, заведи глобальную переменную integer и при нажатии на кнопку увеличивай на 1.
Ybn2 вне форума Ответить с цитированием
Старый 09.01.2011, 19:32   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Еще вопрос как можно записать строку в файл несколько раз. Скажем ввел в edit что то нажал на button,строка записалась,Edit очистился.и так несколько раз. и можно ли перед каждой строкой дописать ее номер
1) один вопрос, одна тема!
не отвлекайтесь о темы (а для нового вопроса создавайте новую тему!)...

2) Есть подозрение на x-y-z (Сага о X, Y и Z... или о том, как же важно правильно формулировать, чего мы хотим.)
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шифрование поблочно, Delphi Petr1K Помощь студентам 3 20.12.2010 13:31
xor-шифрование Halyna Помощь студентам 0 06.12.2010 17:24
XOR шифрование. 0479 Помощь студентам 4 14.09.2010 16:24
Delphi / простейшее шифрование FCSM Помощь студентам 3 19.04.2010 15:48
Шифрование в delphi Ensoph Помощь студентам 3 20.03.2009 15:18