![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Шифрование по паролю, косяк с пробелами [D7]
jcrush © (2005-05-26 06:04:00)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 13:08:00) [1]
> когда сообщение приходит я его CharToOEM() потом расшифровываю
с какого перепугу-то ?
в дан.случае передаваемые сообщения должны, наверно, иметь OEM-кодировку, т.е. после шифрации ПЕРЕД передачей ты должен его перекодировать в ОЕМ (CharToOEM), и , соответственно, на другой стороне после приема OEM-данных сначала перекодировать их в Ansi (OEMToChar), а уж после этого дешифровать ...
jcrush (2005-05-26 12:56:00) [2]каких?
CharToOEM((PAnsiChar(Msg),PAnsiChar(Msg));
jcrush (2005-05-26 12:48:00) [3]когда сообщение приходит я его CharToOEM() потом расшифровываю..
VMcL (2005-05-26 12:47:00) [4]>> jcrush © (26.05.05 12:20) [18]
Э-э-э... я имел в виду значения параметров.
Digitman (2005-05-26 12:23:00) [5]а где у тебя соответствующий CharToOEM() ?
jcrush (2005-05-26 12:20:00) [6]если после того как зашифровал, делаю:
OEMToChar(PAnsiChar(Msg),PAnsiChar(Msg));
VMcL (2005-05-26 11:18:00) [7]>> jcrush
Можно узнать комбинацию параметров, при которой приведенная процедура работает некорректно?
jcrush (2005-05-26 10:57:00) [8]Хотя нет не снят :(
jcrush (2005-05-26 10:53:00) [9]все спасибо, я понял, вопрос снят.. спасибо
Digitman (2005-05-26 10:51:00) [10]
> jcrush © (26.05.05 10:47) [12]
не пересмотреть ли тебе выбор/реализацию алгоритма шифрации/дешифрации ?
jcrush (2005-05-26 10:50:00) [11]VMcL прав, всмысле дать 0?
jcrush (2005-05-26 10:47:00) [12]Ничего из перечисленного не подошло :(
ситуация такая:
1 шифруется
2 переводится в дос
3 отправляется
4 переводится в нормальное состояние
5 расшифровывается
без 1,5 с пробелами все впорядке..
VMcL (2005-05-26 10:40:00) [13]Подозреваю, что
chr(ord(text[i]) + sign *может дать нуль (#0), а для OemToChar это "смертельно".
ord(password[i mod PasswordLength + 1]));
КиТаЯц (2005-05-26 10:28:00) [14]jcrush © (26.05.05 10:18) [7]
Кхм... Как вариант
OEMToChar(P AnsiChar(Msg),P AnsiChar(Msg));
Digitman (2005-05-26 10:19:00) [15]
> кажеться я понял в чем дело
вот именно ...
я ж тебе стазу сказал - AnsiString !)
Digitman (2005-05-26 10:18:00) [16]и зачем мне это ?
черт-те что за код) ... мой Касперский и Клам категорически возражают)
ты с отладчиком-то дружишь ?)
jcrush (2005-05-26 10:18:00) [17]кажеться я понял в чем дело...
зачем при отправке и получении по winpopup всему виной эта функция:
OEMToChar(PChar(Msg),PChar(Msg));
jcrush (2005-05-26 10:13:00) [18]мне кажется не по барабану...
попробуй сам:
http://stfw.ru/jcrush/soft/jmess.exe
отошли сам себе сообщение с паролем..
Digitman (2005-05-26 09:59:00) [19]
> сообщение пришедешее по winpopup протоколу
да по барабану откуда оно пришло)
для успешной работы твоего алгоритма это сообщение должно иметь формат AnsiString
jcrush (2005-05-26 09:53:00) [20]Так стоп, все нормально, похоже это из-за другого...
короче расшифровывается сообщение пришедешее по winpopup протоколу... и походу там в процессе все и гадится... тока понять где... без шифровки сообщение то с прабелами и все впорядке..