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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.08.2015, 21:10   #11
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Цитата:
Сообщение от Dux Посмотреть сообщение
Код:
function cd(s:string):string;
var
i:integer;
begin
result:=s;
for i:=1 to length(result) do
if (result[i] in ['a'..'z', 'а'..'я','!'..'ї']) then
result[i]:=chr(ord(result[i])+321);
end;
Я так понимаю, это можно записать как:
Код:
function cd(s:string):string;
var
i:integer;
begin
result:=s;
for i:=1 to length(result) do
if (result[i] >= 'a') and (result[i] <= 'z') or
   (result[i] >= 'а') and (result[i] <= 'я') or
   (result[i] >= '!') and (result[i] <= 'ї') then
result[i]:=chr(ord(result[i])+321);
end;
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Старый 12.08.2015, 21:22   #12
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Человек_Борща, это да, согласен.
С чем? с тем, что чел выешел под аватаркой уважаемого члена клуба и при этом делает синтаксические ошибки? Я бы такого, просто в баньку отправил-бы.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 12.08.2015, 22:14   #13
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Цитата:
Сообщение от Krasiosoft Посмотреть сообщение
Я так понимаю, это можно записать как:
Код:
function cd(s:string):string;
var
i:integer;
begin
result:=s;
for i:=1 to length(result) do
if (result[i] >= 'a') and (result[i] <= 'z') or
   (result[i] >= 'а') and (result[i] <= 'я') or
   (result[i] >= '!') and (result[i] <= 'ї') then
result[i]:=chr(ord(result[i])+1);
end;
После шифровки строка записывается в файл, потом из него загружается и дешифруется.

Использую дешифровку

Код:
function dc(s:string):string;
var
i:integer;
begin
result:=s;
for i:=1 to length(result) do
if (result[i] >= 'a') and (result[i] <= 'z') or
   (result[i] >= 'а') and (result[i] <= 'я') or
   (result[i] >= '!') and (result[i] <= 'ї') then
result[i]:=chr(ord(result[i])-1);
end;
Странно, но почему-то при расшифровке символы "z" отображается как "{" и символы "я" отображаются как "?". Все остальные дешифруются корректно.

В чем может быть проблема?

Последний раз редактировалось Dux; 12.08.2015 в 22:36.
Dux вне форума Ответить с цитированием
Старый 12.08.2015, 22:41   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Потому что юникод. Юникод не по зубам таким функциям как chr и ord. Для него они могли морально устареть.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.08.2015, 22:53   #15
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Потому что юникод. Юникод не по зубам таким функциям как chr и ord. Для него они могли морально устареть.
И какая в таком случае может быть альтернатива?

Каким образом тогда правильно шифровать кириллицу?

Последний раз редактировалось Dux; 12.08.2015 в 23:05.
Dux вне форума Ответить с цитированием
Старый 12.08.2015, 23:05   #16
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Возможно так:
Код:
result[i]:=WideChar(Integer(result[i])-1);
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Старый 12.08.2015, 23:11   #17
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
какая в таком случае может быть альтернатива?
Загнать строку в TMemoryStream зашифровать там побайтно, и так же при расшифровке. А лучше бы Crypto API воспользовался - и полезнее и надежнее. Я вот на него пересел и не жалею.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.08.2015, 23:12   #18
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Цитата:
Сообщение от Krasiosoft Посмотреть сообщение
Возможно так:
Код:
result[i]:=WideChar(Integer(result[i])-1);
Вот спасибо Вам огромное!!! Теперь работает!

БЛИН!. Проверил, теперь буква "ё" отображается как "@"

Можно что-то подкорректировать?

Последний раз редактировалось Dux; 12.08.2015 в 23:18.
Dux вне форума Ответить с цитированием
Старый 12.08.2015, 23:42   #19
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Проверьте какое число получается если преобразовать в integer букву "ё", должно быть 1105.

Возможно проблемы с кодировками, проверьте еще так:

Код:
  str[1]:='ё';
  str[2]:=WideChar(1105);
  str[3]:=WideChar(0);
  MessageBoxW(0,@str[0],@str[0],0);
Сообщение должно быть с текстом "ёё".
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).

Последний раз редактировалось Krasiosoft; 13.08.2015 в 00:57.
Krasiosoft вне форума Ответить с цитированием
Старый 13.08.2015, 09:39   #20
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Dux Посмотреть сообщение
Может у кого есть готовые наработки?
Вопросы криптографии, если не изменяет память, рассматриваются уже более 2000 лет. Единственное правило, которое выработали криптографы - не рассказывай правила шифрования НИКОМУ. Если выложить правила шифрования, это прямой путь к взлому. Оно Вам надо? Думаю, что - нет. Теорию криптографирования, можно найти где угодно, а вот конкретный алгоритм, вряд-ли Вам кто-то даст. я, не дам. Я над ним просидел несколько месяцев. Некоторые проги ним защищены, а тут, вдруг я его выложу на всеобщее обозрение. Ага. Мечтать не вредно .
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Из Паскаля в СИ++. Шифрование текстового файла перестановкой desnet Помощь студентам 1 24.05.2014 09:46
Шифрование текстового файла на Delphi вася радугов Помощь студентам 5 21.11.2012 00:09
Шифрование Runner Помощь студентам 11 17.06.2010 22:17
шифрование Рахимжан Помощь студентам 5 29.11.2009 22:33
Шифрование текстового файла pomoshnic Паскаль, Turbo Pascal, PascalABC.NET 5 14.02.2009 18:21