![]() |
|
|
#1
|
|||
|
|||
|
Здравствуйте! Я новичок в делфи, так что не кидайтесь! На сколько я понимаю, при чтении файла в stream этот файл, в конечном счете, будет СТРОКОЙ определенной длины и определенного содержания (символы, цифры и тд.). Так вот, я хочу написать шифратор (и соответственно дешифратор) данных путем вставки через определенное кол-во символов в stream какой-либо мусор, допустим пару цифр. Вопрос - верна ли моя теория и на верном ли я пути?
|
|
#2
|
|||
|
|||
|
http://ru.wikipedia.org/wiki/%D0%9A%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B3%D1%80%D 0%B0%D1%84%D0%B8%D1%8F
http://www.webdelphi.ru/2010/05/krip...ndy-i-synapse/ - Алгоритм MD5, Алгоритм Base64 и т.п. Почитай мжт что пригодится... Последний раз редактировалось DrGeorg, 05.05.2013 в 04:54. |
| Этот пользователь сказал Спасибо DrGeorg за это полезное сообщение: | ||
nano_bot (06.05.2013)
| ||
|
#3
|
|||
|
|||
|
Спасибо конечно, но первую статью я уже читал, а по поводу 2ой- мне нужно зашифровать файлы именно тем способом , который я предложил, если это конечно возможно!
|
|
#4
|
|||
|
|||
|
Я так понял вам нужен свой собственный алгоритм?
А чем-же стандартные не устраивают? Можно в несколько проходов шифровать и (или) комбинировать алгоритмы... Просто писать свой алгоритм - очень хлопотное дело... Спросите здесь кого-еще может вам помогут... P.S. Любая строка (строковые данные) в потоке (stream) отображаются как данные (бинарные), например "Hello world!" будет отображаться как: 48 65 6C 6C 6F 72 6C 64 21 (в переводе на шестнадцатеричную систему счисления) Последний раз редактировалось DrGeorg, 05.05.2013 в 05:39. |
| Этот пользователь сказал Спасибо DrGeorg за это полезное сообщение: | ||
nano_bot (06.05.2013)
| ||
|
#5
|
||||
|
||||
|
Берешь бумажку, карандаш и рисуешь, что хочешь в конечном итоге (блок схему или что тебе удобнее), все, дальше дело кодинга только.
|
| Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
Bargest (05.05.2013)
| ||
|
#6
|
||||
|
||||
|
Цитата:
В плане того, что это будет работать - да, будет. Только это скорее не шифровка, а обфускация (усложнение чтения). Последний раз редактировалось Bargest, 05.05.2013 в 14:39. |
| Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
nano_bot (06.05.2013)
| ||
|
#7
|
|||
|
|||
|
Всем спасибо за ответы!
|
|
#8
|
||||
|
||||
|
Кстати, по теме, если уж делать обфускацию: в одной проге видел, как китайцы URL обфусцировали. Взяли строку http://блаблабла.cn/какой-то_адрес/рекламка.php, записали в обратном порядке (т.е. php.акмалкер/серда_от-йокак/nc.албалбалб//
tth) и после каждого символа вставили два случайных. Тут действительно сразу было не понять, что за ерунда. Однако по обращениям к строке можно было быстро отловить алгоритм и, как следствие, вытащить строку. |
|
#9
|
|||
|
|||
|
Bargest, есть еще варианты как усложнить обфускацию?
|
|
#10
|
|||
|
|||
|
Да и все-таки, мне кажется, предложенный мною метод обфускации, в конечном счете можно обойти, там же всеравно определенная последовательность-то будет, которую можно выявить
|
|
#11
|
|||
|
|||
|
Bargest, а вот как вам такой способ - читаем файл, затем в рандомных местах вставляем рандомный мусор, и эти рандомы выдаем пользователю как ключ? Просчитать этот алгоритм можно, но толку-то не будет!
Последний раз редактировалось nano_bot, 08.05.2013 в 04:33. |
|
#12
|
||||
|
||||
|
Извините, что влезаю в ваш междусобойчик
, но у меня вот такой обфускационный бред получилсяКод:
uses
Math;
...
function TxtObfus(ds: string): string;
function stk(ds: char): string;
const m: array [0..2] of array [1..3] of integer = ((1,2,3),(3,1,2),(2,3,1));
var i: byte;
begin
Result:='123'; i:= Random(3);
Result[m[i,1]]:= ds;
Result[m[i,2]]:= chr(RandomRange(byte(ds),255));
Result[m[i,3]]:= chr(RandomRange(byte(ds),255));
end;
var i: integer;
begin
Randomize; Result:='';
for i:=1 to Length(ds) do Result:= Result + stk(ds[i]);
end;
function ObfusTxt(ds: string): string;
function mx(b1, b2, b3 : byte): byte;
begin
if b1 < b2 then Result:= b1 else Result:= b2;
if Result > b3 then Result:= b3;
end;
var i: integer; s: string;
begin
Result:=''; i:=1;
while i <= Length(ds) do
begin
Result:= Result+chr(mx(byte(ds[i]),byte(ds[i+1]),byte(ds[i+2])));
inc(i, 3);
end;
end;Код:
procedure TForm1.Button1Click(Sender: TObject); begin Edit2.Text:= TxtObfus(Edit1.Text); end; procedure TForm1.Button2Click(Sender: TObject); begin Edit3.Text:= ObfusTxt(Edit2.Text); end; |
| Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
nano_bot (08.05.2013)
| ||