Форум: "Начинающим";
Текущий архив: 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);
// Òåïåðü ïðîâåðèì ïîñëåäíèé áàéò
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