зашифровать поток

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
Аватара пользователя
Attid
долгожитель
Сообщения: 2589
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

зашифровать поток

Сообщение Attid »

чет я не догоню, хотю зашифровать поток обычных хором

Код: Выделить всё

procedure CryptBuf(pBuf: Pointer; BufLen: Integer;CodeKey: string);
var
  I: Integer;
  P: pByte;
begin
  P := pBuf;
  if( CodeKey <> '' )then
  for I := 0 to BufLen - 1 do
  begin
   P^ := Byte(CodeKey[1 + ((I - 1) mod Length(CodeKey))]) xor P^;
   inc(P);
  end;
end;


нельзя ли сделать как нибуть так ?

Код: Выделить всё

var fs : TFileStream;
begin
  if sd.Execute then
  begin
    fs := TFileStream.Create(sd.FileName,fmCreate);
    CreateCS(fs);
    fs.Position:=0;
    CryptBuf(fs,fs.Size,'123456');// =)
    fs.Free;
  end;


или надо перегнать в другой поток и шифровать частями ?
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

Можно, если поток - TMemoryStream, а Buf - его свойство Memory.
У остальных потоков своей памяти нет, поэтому ее по-любому придется выделять. А одним куском или по частям - уже зависит от размера.
Аватара пользователя
debi12345
долгожитель
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение debi12345 »

Мартин в MSE* доводит до ума эти делишки, на базе SSL - траффик через пайпы и сокеты шифровать. Уже на подходе.
Ответить