Я отправляю данные через Интернет как TmemoryStream, теперь я хочу зашифровать его с помощью простого алгоритма.Замена байтов в TMemoryStream
Так что я подумал о замене каждого байт в tmemorystream, чтобы его вписать.
выглядит
например, (а MemoryStream в байтах):
[123] [233] [122] [001] [123] [233] [122] [001] [123] [233] [122] [001]
например (пароль в формате ASCII)
привет = [72] [73]
Шифрование
[123 + 72] [233 + 73] [122 + 72] [001 + 73] [72 123+] [233 + 73] [122 + 72] [001 + 73] [123 + 72] [233 + 73] [122 + 72] [001 + 73]
Итоговое [195] [51] [194] [74] ...
Как я могу сделать такую замену в одном анализе, используя Delphi
и
Как заменить байт в memeorystream за один раз для достижения этого.
=============================================================================================== ========================
var pq: integer ;
....
LLine := // from a stream
//start blocjk
//my encription
p := LLine.Memory;
for i := 0 to LLine.Size-1 do
begin
pp := p^ ;
pq := pp + 72 ;
if pq > 255 then
begin
pq := pq - 255 ;
end;
P^ := Byte(pq) ;
inc(p);
end;
// my encription end
//my decription
LLine.Position := 0;
p := LLine.Memory;
for i := 0 to LLine.Size-1 do
begin
pp := p^ ;
pq := pp - 72 ;
if pq < 0 then
begin
pq := pq + 255 ;
end;
P^ := Byte(pq) ;
inc(p);
end;
//end
//end blocjk
Image1.Picture.Graphic.LoadFromStream(LLine);
Как бы вы разложили обернутую [233 + 73] -> [51] обратно в [233 + 73]? –
@AlexK. вы можете вычесть 73 из 51 (73 - символ в passowrd), иначе это уменьшит 22 для 255 – VibeeshanRC
Мне не нравится ваш алгоритм. лучше использовать XOR-шифрование или даже лучше использовать шифрование реального потока, например RC4, которое легко реализовать. – kobik