Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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 *
ord(password[i mod PasswordLength + 1]));
может дать нуль (#0), а для OemToChar это "смертельно".


 
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
1-1117194534
Masta Hookah
2005-05-27 15:48
2005.06.14
"ZIP" -> COMPRESSED


10-1093435544
Dima
2004-08-25 16:05
2005.06.14
Количество подключений через SocketServer


14-1116677046
Иксик
2005-05-21 16:04
2005.06.14
Крупный митинг


6-1111439002
Zion
2005-03-22 00:03
2005.06.14
Как узнать IP-адрес компа в локалке по его сетевому имени?


14-1117026294
menart
2005-05-25 17:04
2005.06.14
Языки программирования...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский