Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > RSA (шифрование файлов любого типа)


Автор: Anzhela 2.11.2009, 00:48
помогите пожалуйста, где посмотреть почитать насчет шифрования файла любого формата РСА. Я реализовала РСА для шифровки и дешифровки текста, но что подразумевает шифровка файла, например ?

Добавлено через 2 минуты и 25 секунд
продолжение .. например файлов jpeg. 
Если кому надо могу помочь с реализацией шифрования текста, символов

Автор: kami 2.11.2009, 01:02
Цитата(Anzhela @  2.11.2009,  00:48 Найти цитируемый пост)
Я реализовала РСА для шифровки и дешифровки текста, но что подразумевает шифровка файла, например ?

Да то же самое. Что мешает представить файл с любым расширением, как текст (например, загрузить его в строковую переменную)? Здесь будет 2 проблемы:
1. Скорость реализации алгоритма
2. Размер файла (некузяво загонять файл в сотни мегабайт и более в память целиком, не помешает разбить его на блоки и подгружать последовательно).

Автор: bems 2.11.2009, 01:35
Ну строковые переменные лучше оставить для строковых данных, но в целом то же самое. Вместо кода символа бери значение очередного байта.

Автор: Anzhela 5.11.2009, 15:07
не получается представить любой файл (например не работает для jpeg, doc файлов), можете привести пример или подсказать почему?
Код

var
  Str1: TFileStream;
  I: Integer;
begin
  if OpenDialog1.Execute then
  begin
    Str1 := TFileStream.Create (OpenDialog1.Filename, fmOpenRead);
    try
      Memo1.Lines.LoadFromStream (Str1);
    finally
      Str1.Free;
    end;
  end;

 smile 

Модератор: используйте подсветку кода!

Автор: bems 5.11.2009, 16:05
С одной стороны человек реализовал рса, а с другой грузит бинарные данные в мемо....
Не делай этого. Шифруй сразу из потока.

Автор: Anzhela 5.11.2009, 16:46
у меня процедура шифровки cypher(s:string,e,multiplay:integer) 
если делать напрямую из потока...не понимаю...как взять данные прямо из потока?
я ориентировалась на следующее:
Код

var
  FS,FD: TFileStream;
  Buf: String;
  Len: Integer;
  DestStr: String;
begin
  FS := TFileStream.Create(FilePathIn,fmOpenRead);
  try
    FD := TFileStream.Create(FilePathOut,fmCreate);
    try
      Len := FS.Size;
      SetLength(Buf,Len);
      FS.Read(Buf[1],Len);
      //Здесь шифруем строку
      DestStr := CryptStr(Buf);
      FD.Write(DestStr[1],Length(DestStr));
    finally
      FD.Free;
    end;
  finally
    FS.Free;
  end;


но здесь тоже не все файлы открываются
Модератор: И еще раз: кнопка КОД справа над формой быстрого ответа

Автор: bems 5.11.2009, 20:49
покажи CryptStr

Автор: Anzhela 6.11.2009, 00:45
Код

function cryptstr(s1:string):string;
var i:integer;
    p:integer;
    convert_p:integer;
    SL:TStringList;
    s2:char;
begin
e:=7;
multiply:=13231;
 SL := TStringList.Create;
 for i := 1 to length(s1)  do
 begin
    s2:=Char(s1[i]);
    p:=((ord(s2)));
    convert_p:=MyPwMod(p,e,multiply);
    sl.Add(inttostr(convert_p));
 end;
Result:=sl.Text;
end;

вроде все файлы загружает...
при сохранении (смотри выше: FD := TFileStream.Create(FilePathOut,fmCreate);) получаю ерунду, хотя кодируется правильно как правильно сохранить и загрузить?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)