Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.06.17;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.038 c
15-1180001177
Хэш
2007-05-24 14:06
2007.06.17
MD5


4-1168075529
ro12
2007-01-06 12:25
2007.06.17
Контекстное меню виндовских контроллов.


9-1153360589
RobinBad
2006-07-20 05:56
2007.06.17
Установка Glscene


1-1177304343
IMHO
2007-04-23 08:59
2007.06.17
Папка Program Files


2-1179954806
ZAG
2007-05-24 01:13
2007.06.17
калькулятор





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский