|
Delphi для параноика: свой PGP за 5 минут Лозовский Александр Xakep, номер #053, стр. 053-084-3 End Of The World Ну все, с этого момента можешь считать, что свой PGP у тебя уже есть. Ключи его полностью совместимы с другими реализациями RSA алгоритма, а в исходник я еще включил функцию сохранения и загрузки открытого ключа из файла. Поэтому не забудь скачать его с www.cydsoft.com/vr-online или взять на диске. Да, еще глянь на директорию с компонентом, там есть хелп-файл и его неплохо бы почитать (правда, он на английском). Там понаписано много интересного, в том числе и про цифровую подпись (да, она тоже поддерживается RSA алгоритмом). Вещь это нужная, потому что без нее MS IE никогда бы не выдавал нечто вроде: "Подлинность The Super-Porno-Viewer удостоверена компанией Майкрософт. Всегда ли доверять компании Майкрософт?" :) На этой торжественной ноте ваш непокорный спешит откланяться и сообщить, что на все вопросы (жалобы, предложения, тупой флейм, etc) он с удовольствием ответит по электронной почте :). procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin IF nado= true then //Поехали begin IF i= length-1 then //Да ведь мы все заполнили... begin RSA1.MakeKeyPair(pP, pQ); //Образуем ключ nado:= false; //И уже ничего не надо Edit1.Text:= RSA1.PrivateKey; //Отобразим найденное Edit2.Text:= RSA1.PublicKey; end else //Ах, не заполнили? Исправим begin pP.Contents[i]:= X*Y*random($FFFF); //Координаты умножаем на случайность pQ.Contents[i]:= X*Y*Y*random($FFFF); Progressbar1.Position:=i; //Увеличим прогресс :) inc(i); //Перейдем к следующему элементу, увеличим i end; end; end; procedure TForm1.BitBtn1Click(Sender: TObject); begin IF RadioButton1.Checked then //Надо шифровать? begin FromT:= Memo1.text; //Исходная строка RSA1.PublicKey:= Edit2.Text; //Ключ RSA1.EncryptString(FromT, ToT); //Зашифровали Memo2.text:= ToT; //Вывели конечный текст end else //Ах, не шифровать? Тогда наоборот :) begin RSA1.PrivateKey:= EDit1.Text; FromT:= memo2.Text; RSA1.DecryptString(FromT, ToT); MEmo1.Text:= ToT; end; end; |