Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.06.17;
Скачать: CL | DM;

Вниз

File To String   Найти похожие ветки 

 
nem0   (2007-05-28 14:05) [0]

Привет! Пишу прогу на Delphi для шифрования текстовых файлов (алгоритм RSA).
Шифрование происходит при помощи процедуры
RSAEncrypt(OpenText : String{!!}; <ключ>; CodeText : String).
Хочу добавить возможность шифрования небольших файлов, не только txt, а например еще и jpg etc) Вопрос в том, как ентот файл загнать в String. ПАМАГИТЕ ПЛЗ! Курсач летит.
PS Опыт программирования 2 месяца)


 
Riply ©   (2007-05-28 14:09) [1]

> [0] nem0   (28.05.07 14:05)
>Шифрование происходит при помощи процедуры
>RSAEncrypt(OpenText : String{!!}; <ключ>; CodeText : String).
>Вопрос в том, как ентот файл загнать в String.
Судя по тому, что среди параметров RSAEncrypt нет DataSize, то никак


 
nem0   (2007-05-28 14:17) [2]

Так мона его добавить, расскажи че к чему ПЛЗ


 
Сергей М. ©   (2007-05-28 14:22) [3]


> Шифрование происходит при помощи процедуры
> RSAEncrypt


Она, эта процедура, к тебе с Луны свалилась или ты ее сам написал ?


 
Jeer ©   (2007-05-28 14:23) [4]


> nem0   (28.05.07 14:05)


Преобразовать, например, в:
-  hex-вид
-  base-64


 
MBo ©   (2007-05-28 14:23) [5]


with TFileStream.Create(Filename, fmOpeRead) do begin
 SetLength(OpenTextString, Size);
 Read(OpenTextString[1], Size);
 Free;
end;


 
nem0   (2007-05-28 14:25) [6]


> Она, эта процедура, к тебе с Луны свалилась или ты ее сам
> написал ?

с луны, а точнее библиотека FGInt

rocedure RSAEncrypt(P : String; Var exp, modb : TFGInt; Var E : String);
Var
  i, j, modbits : longint;
  PGInt, temp, zero : TFGInt;
  tempstr1, tempstr2, tempstr3 : String;
Begin
  Base2StringToFGInt("0", zero);
  FGIntToBase2String(modb, tempstr1);
  modbits := length(tempstr1);
  convertBase256to2(P, tempstr1);
  tempstr1 := "111" + tempstr1;
  j := modbits - 1;
  While (length(tempstr1) Mod j) <> 0 Do tempstr1 := "0" + tempstr1;

  j := length(tempstr1) Div (modbits - 1);
  tempstr2 := "";
  For i := 1 To j Do
  Begin
     tempstr3 := copy(tempstr1, 1, modbits - 1);
     While (copy(tempstr3, 1, 1) = "0") And (length(tempstr3) > 1) Do delete(tempstr3, 1, 1);
     Base2StringToFGInt(tempstr3, PGInt);
     delete(tempstr1, 1, modbits - 1);
     If tempstr3 = "0" Then FGIntCopy(zero, temp) Else FGIntMontgomeryModExp(PGInt, exp, modb, temp);
     FGIntDestroy(PGInt);
     tempstr3 := "";
     FGIntToBase2String(temp, tempstr3);
     While (length(tempstr3) Mod modbits) <> 0 Do tempstr3 := "0" + tempstr3;
     tempstr2 := tempstr2 + tempstr3;
     FGIntdestroy(temp);
  End;

  While (tempstr2[1] = "0") And (length(tempstr2) > 1) Do delete(tempstr2, 1, 1);
  ConvertBase2To256(tempstr2, E);
  FGIntDestroy(zero);
End;


 
nem0   (2007-05-28 14:30) [7]


> Преобразовать, например, в:
> -  hex-вид
> -  base-64

А поподробнее, каким образом это делается?


 
Сергей М. ©   (2007-05-28 14:30) [8]

Ну судя по фигурирующим ф-циям Copy() и Delete() приспособить эту ф-цию для работы с произвольными данными в строковом буфере нельзя.


 
nem0   (2007-05-28 14:35) [9]


> Ну судя по фигурирующим ф-циям Copy() и Delete() приспособить
> эту ф-цию для работы с произвольными данными в строковом
> буфере нельзя.

Вот не хорошо это, ибо плохо


 
Сергей М. ©   (2007-05-28 14:42) [10]


> nem0   (28.05.07 14:35) [9]


А что, на FGInt свет клином сошелся ?


 
Jeer ©   (2007-05-28 14:48) [11]

Misc компоненты Indy

IdEncoderMime Encodes binary data into a text format using MIME encoding.
IdEncoderUUE Encodes binary data into a text format using UUE encoding.
IdEncoderXXE Encodes binary data into a text format using XXE encoding.


 
nem0   (2007-05-28 14:56) [12]

Всем Big ThanXXX. Ща буду разбираться и тестить.


 
palva ©   (2007-05-28 15:00) [13]


Вот так можно занести содержимое двоичного файла в строку. Функция Length примененная к этой строке дает ее длину. Так что параметра "длина" можно не применять.

program Project1;
{$APPTYPE CONSOLE}
uses
 SysUtils;
var
 s: String;
 fi: File;
 buf : Array [0..4095] of Char;
 redn, ofs: Integer;
begin
 AssignFile(fi, "D:\TEMP\303316_6.jpg");
 FileMode := 0;
 Reset(fi, 1);
 SetLength(s, FileSize(fi));
 ofs := 1;
 repeat
   BlockRead(fi, buf, 4096, redn);
   Move(buf[0], s[ofs], redn);
   ofs := ofs + redn;
 until redn <> 4096;
 CloseFile(fi);
 // &#210;&#229;&#239;&#229;&#240;&#252; &#239;&#240;&#238;&#226;&#229;&#240;&#232;&#236; &#239;&#238;&#241;&#235;&#229;&#228;&#237;&#232;&#233; &#225;&#224;&#233;&#242;
 Write(Ord(s[length(s)]));
end.


 
iXT ©   (2007-05-28 15:03) [14]

> [10] Сергей М. ©   (28.05.07 14:42)

А что еще есть? (RSA 4096bit интересует)


 
Kolan ©   (2007-05-28 15:08) [15]

> String{!!};

Что интересно значить этот комментарий?


 
Сергей М. ©   (2007-05-28 15:21) [16]


> RSA 4096bit интересует


Именно RSA ? Иные алгоритмы никак не устроят ? Скажем, AES-128 (Rijndael)?


 
iXT ©   (2007-05-28 15:43) [17]

> [16] Сергей М. ©   (28.05.07 15:21)

Нет, именно RSA, причем, именно 4096-bit.


 
Anatoly Podgoretsky ©   (2007-05-28 16:41) [18]


> Судя по тому, что среди параметров RSAEncrypt нет DataSize,
>  то никак

Для стринг это лишнее!


 
Riply ©   (2007-05-28 17:02) [19]

> [18] Anatoly Podgoretsky ©   (28.05.07 16:41)
>Для стринг это лишнее!
Согласна. На автомате восприняла, как PChar :)



Страницы: 1 вся ветка

Текущий архив: 2007.06.17;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.018 c
1-1177001980
Angakok
2007-04-19 20:59
2007.06.17
Непонятная особенность в работе кода


15-1179513213
wp2
2007-05-18 22:33
2007.06.17
Помогите! Похоже я спалил два SATA контроллера.


2-1180302564
snowkam2
2007-05-28 01:49
2007.06.17
Перекрещивание обьектов!


2-1180092364
vitv
2007-05-25 15:26
2007.06.17
Статья Тенцера про СОМ.


15-1179649389
Kltv
2007-05-20 12:23
2007.06.17
Progressbar с поддержкой скинов