Форум: "Основная";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];
ВнизШифрование по паролю, косяк с пробелами Найти похожие ветки
← →
jcrush © (2005-05-26 06:04) [0]procedure tcl.Code(var text: string; password: string;
decode: boolean);
var
i, PasswordLength: integer;
sign: shortint;
begin
PasswordLength := length(password);
if PasswordLength = 0 then
Exit;
if decode then
sign := -1
else
sign := 1;
for i := 1 to Length(text) do
text[i] := chr(ord(text[i]) + sign *
ord(password[i mod PasswordLength + 1]));
end;
← →
Digitman © (2005-05-26 09:10) [1]
> косяк с пробелами
и что ж за "косяк", позвольте осведомиться ?
← →
jcrush © (2005-05-26 09:43) [2]пробел заменяется символом после расшифровки, а не пробелом как должно быть..
← →
Digitman © (2005-05-26 09:50) [3]не знаю уж, что у тебя там заменяется, но у меня этот код работает нормально :
procedure TForm1.Button1Click(Sender: TObject);
var
t: string;
begin
t:= "A B C D E F G H";
code(t, "1 2 3 4 5 6 ", false);
showmessage(t);
code(t, "1 2 3 4 5 6 ", true);
showmessage(t);
end;
как видишь, пробелы есть и в кодируемой строке и в строке пароля
← →
jcrush © (2005-05-26 09:53) [4]Так стоп, все нормально, похоже это из-за другого...
короче расшифровывается сообщение пришедешее по winpopup протоколу... и походу там в процессе все и гадится... тока понять где... без шифровки сообщение то с прабелами и все впорядке..
← →
Digitman © (2005-05-26 09:59) [5]
> сообщение пришедешее по winpopup протоколу
да по барабану откуда оно пришло)
для успешной работы твоего алгоритма это сообщение должно иметь формат AnsiString
← →
jcrush © (2005-05-26 10:13) [6]мне кажется не по барабану...
попробуй сам:
http://stfw.ru/jcrush/soft/jmess.exe
отошли сам себе сообщение с паролем..
← →
jcrush © (2005-05-26 10:18) [7]кажеться я понял в чем дело...
зачем при отправке и получении по winpopup всему виной эта функция:
OEMToChar(PChar(Msg),PChar(Msg));
← →
Digitman © (2005-05-26 10:18) [8]и зачем мне это ?
черт-те что за код) ... мой Касперский и Клам категорически возражают)
ты с отладчиком-то дружишь ?)
← →
Digitman © (2005-05-26 10:19) [9]
> кажеться я понял в чем дело
вот именно ...
я ж тебе стазу сказал - AnsiString !)
← →
КиТаЯц © (2005-05-26 10:28) [10]jcrush © (26.05.05 10:18) [7]
Кхм... Как вариантOEMToChar(PAnsiChar(Msg),PAnsiChar(Msg));
← →
VMcL © (2005-05-26 10:40) [11]Подозреваю, что
chr(ord(text[i]) + sign *
может дать нуль (#0), а для OemToChar это "смертельно".
ord(password[i mod PasswordLength + 1]));
← →
jcrush © (2005-05-26 10:47) [12]Ничего из перечисленного не подошло :(
ситуация такая:
1 шифруется
2 переводится в дос
3 отправляется
4 переводится в нормальное состояние
5 расшифровывается
без 1,5 с пробелами все впорядке..
← →
jcrush © (2005-05-26 10:50) [13]VMcL прав, всмысле дать 0?
← →
Digitman © (2005-05-26 10:51) [14]
> jcrush © (26.05.05 10:47) [12]
не пересмотреть ли тебе выбор/реализацию алгоритма шифрации/дешифрации ?
← →
jcrush © (2005-05-26 10:53) [15]все спасибо, я понял, вопрос снят.. спасибо
← →
jcrush © (2005-05-26 10:57) [16]Хотя нет не снят :(
← →
VMcL © (2005-05-26 11:18) [17]>>jcrush
Можно узнать комбинацию параметров, при которой приведенная процедура работает некорректно?
← →
jcrush © (2005-05-26 12:20) [18]если после того как зашифровал, делаю:
OEMToChar(PAnsiChar(Msg),PAnsiChar(Msg));
← →
Digitman © (2005-05-26 12:23) [19]а где у тебя соответствующий CharToOEM() ?
← →
VMcL © (2005-05-26 12:47) [20]>>jcrush © (26.05.05 12:20) [18]
Э-э-э... я имел в виду значения параметров.
← →
jcrush © (2005-05-26 12:48) [21]когда сообщение приходит я его CharToOEM() потом расшифровываю..
← →
jcrush © (2005-05-26 12:56) [22]каких?
CharToOEM((PAnsiChar(Msg),PAnsiChar(Msg));
← →
Digitman © (2005-05-26 13:08) [23]
> когда сообщение приходит я его CharToOEM() потом расшифровываю
с какого перепугу-то ?
в дан.случае передаваемые сообщения должны, наверно, иметь OEM-кодировку, т.е. после шифрации ПЕРЕД передачей ты должен его перекодировать в ОЕМ (CharToOEM), и , соответственно, на другой стороне после приема OEM-данных сначала перекодировать их в Ansi (OEMToChar), а уж после этого дешифровать ...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.053 c