Помощь - Поиск - Пользователи - Календарь
Полная версия: Шифрование текстовых фрагментов в теле программы.
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
ZeroLink
Шифрование текстовых фрагментов в теле программы относится к разделу
антиюзериады. В последнее время развелось много юзеров, которые гордятся
своим умением нажать F4 на exeшнике и посмотреть, нет ли там строк "Copyright",
"Автор программы ....." и изменять их типа на "Автор проги хакер Вася" и т.п.
Поэтому я предлагаю небольшой антиюзерский приём (См. CRYPT.RAR)
xds
Помню, в годы моего развращенного детства (классе в 8-9), я успешно пользовался следующим тривиальным, но действенным методом:
Код
program Crypt;

procedure Recrypt(var Buf; Count: Word); assembler;
asm
 mov dx,Count
 or dx,dx
 jz @3
 les di,Buf
 cld
@1:
 mov ah,es:[di]
 mov cx,8
@2:
 shl ah,1
 rcr al,1
 loop @2
 stosb
 dec dx
 jnz @1
@3:
end;

var
 sf, df: File;
 Buf: array[0..4095] of Byte;
 r: Word;

begin
 Assign(sf, ParamStr(1));
 Reset(sf, 1);
 Assign(df, ParamStr(2));
 Rewrite(df, 1);
 repeat
   BlockRead(sf, Buf, SizeOf(Buf), r);
   Recrypt(Buf, r);
   BlockWrite(df, Buf, r);
 until r < SizeOf(Buf);
 Close(df);
 Close(sf);
end.
godd
ZeroLink
а если изначально ord(№) или еще какой символ? что тогда? chr(267)???
Решение: хранить данные в виде массива of word, и когда надо - уже расшифровывать. + можно прибавлять не на 15 а на random(65000), а само значение хранить в array[0]. + мона над самим значением поизмываться)))
xds
Цитата(godd @ 9.10.04 18:09)
ZeroLink
а если изначально ord(№) или еще какой символ? что тогда? chr(267)???


С Chr все в порядке: "function Chr(X: Byte): Char;", т. е. ее аргумент всегда приводится к типу Byte, что равносильно взятию его по модулю 256. Так что Chr(267) = Chr(267 mod 256)=Chr(11). Однако, при инициализации массива лучше пользоваться не классической записью строковых констант, а конструкциями вида #c1#c2#cx3... (e. g. 'ABC' = #65#66#67). Ведь для символов незашифрованного текста с кодами 241-255, в зашифрованном виде мы получим управляющие символы (#0..#31).

Цитата
мона над самим значением поизмываться)))

Да, можно применить DES или Blowfish ;) Мы ведь рассматриваем простейшие методы!
godd
Цитата
символы (#0..#31)
.
попробуй chr(1), ну или chr(5) вывести... чо в итоге? выводяца ;)
xds
Цитата(godd @ 11.10.04 9:04)
.
попробуй chr(1), ну или chr(5) вывести... чо в итоге? выводяца ;)

а) не гарантированно;
б) зачем?
godd
xds
под досом на экран выводяца они.
зачем? - для прикола, рожицы там всякие ))
xds
...
hydroxychloroquine 400 mg buy on
Prix Cialis France Pharmacie
purchase hydroxychloroquine sulf
cialis cures performance anxiety
finasteride 1 mg without prescri
Xenical Vente
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.