Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2015, 13:51   #11
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Используте MS Crypto API для RSA. Виталий и ссылок на обсуждение дал, и в его исходниках FreeAlisa где-то на форуме это так есть.....
Человек_Борща вне форума Ответить с цитированием
Старый 02.06.2015, 14:05   #12
lastell
Пользователь
 
Регистрация: 14.02.2014
Сообщений: 30
По умолчанию

14:05
Не увидел того, что надо

14:09
Раньше использовал RSacalc

Код:
procedure TRSACalculator.Calculate(const Plaintext,Modulus: ANSIString;  var Ciphertext: ANSIString);
var i:integer;
begin
  i:=0;
  while busy do begin
    inc(i);
    if i>1000 then exit;
    sleep(50);
    Application.ProcessMessages;
  end;
  //
  Password.setAttribute('value',Plaintext,0);    
  ModulusE.setAttribute('value',Modulus,0);
  web.RunJS('Go();');
  Ciphertext:=CiphertextE.getAttribute('value',0);
end;
 
constructor TRSACalculator.Create(form: TForm);
begin
  busy:=true;
  p:=TPanel.Create(Form);
  p.Parent:=Form;
  web:=TWebBrowser.Create(p);
  web.Visible:=false;
  TWinControl(web).Parent:=p;
  p.Height:=0;
  p.Width:=0;
  web.OnDocumentComplete:=self.WebDocumentComplete;
  web.OnBeforeNavigate2:=self.WebNavigate2;
  web.Navigate(iniName);
Код:
RSA:=TRSACalculator.Create(form1);
RSA.Calculate(form1.sedit1.Text,authkey,text);
Но в потоке не используется.

14:16
Попытался реализовать с помощью FGINT

Код:
authkey = 'E5FF0DF37B5D42F1927685190B6F90B008AE805909A2D018F2B56A9C13227885A4B977649984647798168D550319C0CBD4F4A1CE81BB642C3EB2FADC7717A1D8CB87606D2554E0F30CA2395FF5C634854D97255B11A4DD2C2FA9ADDD10055F7911E7CFB9F6811E7BE20EC27BCE4B68DB7D6AE57BECF6224C6D3BD89B7C1CE5DBFF88BCC3F6E10EEF2903B1043BD2A4C3CDC29A455CB616CBF90D442F12F7880BF69AB1209C6B0DBC4FC87E7737936F587402D5A314F53A7E09B966F54E24C7FDD7391CE7174E2C22DFED33A2F1AC81B3693781D3276E9678005BC87A629DDA3934C702C7F8BA1E4527B81742AC5D2E7629DF324C00B56BAE67DDC00236E578CD';
kexp:='010001';
Base10StringToFGInt(authkey,authkeys);
Base10StringToFGInt(kexp,kexps);
rsaencrypt('радугавнебе', authkeys, kexps, passw);
Происходит ошибка при конвертировании: "Project1.exe raised exception class EConvertError with message "9CF9" is not a valid integer value"

Настаиваю - форум не чат, пользуйся кнопкой Правка
Модератор

Последний раз редактировалось Аватар; 02.06.2015 в 14:52.
lastell вне форума Ответить с цитированием
Старый 02.06.2015, 16:24   #13
lastell
Пользователь
 
Регистрация: 14.02.2014
Сообщений: 30
По умолчанию

16:24
По прежнему мне нужна помощь!

18:48
Не одна найденная мною функция не поддерживает такой большой публичный ключ. Помогите, пожалуйста!

Последний раз редактировалось Аватар; 02.06.2015 в 21:10.
lastell вне форума Ответить с цитированием
Старый 02.06.2015, 19:34   #14
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

Код:
authkey = 'E5FF0DF37B5D42F1927685190B6F90B008AE805909A2D018F2B56A9C13227885A4B977649984647
798168D550319C0CBD4F4A1CE81BB642C3EB2FADC7717A1D8CB87606D2554E0F30CA2395FF5C634854D97255B11A4
DD2C2FA9ADDD10055F7911E7CFB9F6811E7BE20EC27BCE4B68DB7D6AE57BECF6224C6D3BD89B7C1CE5DBFF88BCC3
F6E10EEF2903B1043BD2A4C3CDC29A455CB616CBF90D442F12F7880BF69AB1209C6B0DBC4FC87E7737936F587402D
5A314F53A7E09B966F54E24C7FDD7391CE7174E2C22DFED33A2F1AC81B3693781D3276E9678005BC87A629DDA3934
C702C7F8BA1E4527B81742AC5D2E7629DF324C00B56BAE67DDC00236E578CD';
kexp:='010001';
Base64StringToFGInt(authkey,authkeys);//BASE 64
Base10StringToFGInt(kexp,kexps);//binary
rsaencrypt('радугавнебе', authkeys, kexps, passw);
Не стесняемся, плюсуем!

Последний раз редактировалось Slym; 02.06.2015 в 19:37.
Slym вне форума Ответить с цитированием
Старый 02.06.2015, 20:56   #15
lastell
Пользователь
 
Регистрация: 14.02.2014
Сообщений: 30
По умолчанию

Цитата:
Сообщение от Slym Посмотреть сообщение
Код:
authkey = 'E5FF0DF37B5D42F1927685190B6F90B008AE805909A2D018F2B56A9C13227885A4B977649984647
798168D550319C0CBD4F4A1CE81BB642C3EB2FADC7717A1D8CB87606D2554E0F30CA2395FF5C634854D97255B11A4
DD2C2FA9ADDD10055F7911E7CFB9F6811E7BE20EC27BCE4B68DB7D6AE57BECF6224C6D3BD89B7C1CE5DBFF88BCC3
F6E10EEF2903B1043BD2A4C3CDC29A455CB616CBF90D442F12F7880BF69AB1209C6B0DBC4FC87E7737936F587402D
5A314F53A7E09B966F54E24C7FDD7391CE7174E2C22DFED33A2F1AC81B3693781D3276E9678005BC87A629DDA3934
C702C7F8BA1E4527B81742AC5D2E7629DF324C00B56BAE67DDC00236E578CD';
kexp:='010001';
Base64StringToFGInt(authkey,authkeys);//BASE 64
Base10StringToFGInt(kexp,kexps);//binary
rsaencrypt('радугавнебе', authkeys, kexps, passw);
[dcc32 Error] Unit1.pas(95): E2003 Undeclared identifier: 'Base64StringToFGInt'
Попробовал использовать Base256StringToFGInt и уже шифруется, но в passw записывается непонятный текст - кубики и ероглифы

Последний раз редактировалось lastell; 02.06.2015 в 21:01.
lastell вне форума Ответить с цитированием
Старый 03.06.2015, 13:29   #16
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я пас. Я все что знал - вверху выложил.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.06.2015, 15:23   #17
lastell
Пользователь
 
Регистрация: 14.02.2014
Сообщений: 30
По умолчанию

Пытаюсь сделать так:
Код:
function Bit(Value, n: Integer): Boolean;
asm
   bt eax, edx
   setc al
   and eax, 0FFh
end;
 
//Функция быcтрого возведения в степень
function FastPower(a, b, n: integer): integer;
var i: integer;
    ai: extended;
begin
  ai := a;
  for I := Trunc(log2(b)) - 1 downto 0 do
  if Bit(b, i) then ai := Round(sqr(ai) * a) mod n else ai := Round(sqr(ai)) mod n;
  result := Round(ai);
end;
 
function Encrypt(s: string; e, n: integer): TIncodeMes;
  var I: Integer;
begin
  SetLength(result, length(s));
  for I := 0 to Length(s) - 1 do
    result[i] := FastPower(ord(s[i + 1]), e, n)
end;
 
n := StrToIntDef(Edit3.Text, strtoint(edit3.text)); //n=Публичный экспонент:
 e := StrToIntDef(Edit2.Text, strtoint(Edit2.Text));//e=Публичный ключ:
FMes := Encrypt(Memo1.Lines.Text, e, n);
Происходит ошибка при конвертирование e. "Публичный ключ" (здесь написан сам ключ) is not a valid integer value
lastell вне форума Ответить с цитированием
Старый 03.06.2015, 16:03   #18
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

1. Да блин ключ у тебя в Base64 кодировке!!! раскодируй, в FGInt есть процедуры для этого
2. Твой последний пост только 32/64 бита, а у тебя ключ 1024 или больше - в общем не канает
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 03.06.2015, 17:04   #19
lastell
Пользователь
 
Регистрация: 14.02.2014
Сообщений: 30
По умолчанию

Цитата:
Сообщение от Slym Посмотреть сообщение
1. Да блин ключ у тебя в Base64 кодировке!!! раскодируй, в FGInt есть процедуры для этого
2. Твой последний пост только 32/64 бита, а у тебя ключ 1024 или больше - в общем не канает
Я написал, что в файле FGint нету Base64StringToFGInt и выдаёт ошибку при компиляции:

[dcc32 Error] Unit1.pas(95): E2003 Undeclared identifier: 'Base64StringToFGInt'
lastell вне форума Ответить с цитированием
Старый 04.06.2015, 00:51   #20
ДралсяСошибками
Форумчанин
 
Аватар для ДралсяСошибками
 
Регистрация: 31.05.2011
Сообщений: 301
По умолчанию

там хекс
Код:
ConvertHexStringToBase256String(authkey, str);
        Base256StringToFGInt(str, authkeys);
ДралсяСошибками вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
RSA Шифрование Ericnex Помощь студентам 4 18.11.2013 17:36
Шифрование методом RSA c++\c Lokomoss Помощь студентам 7 01.11.2012 16:48
RSA шифрование на C++ Lervil Фриланс 9 04.07.2011 09:38
DES и RSA шифрование! korneplodik Помощь студентам 0 16.05.2011 10:56
RSA шифрование Slimbr Помощь студентам 0 12.12.2009 13:30