Форум: "Начинающим";
Текущий архив: 2017.02.12;
Скачать: [xml.tar.bz2];
ВнизRSA шифрование по публичному ключу Найти похожие ветки
← →
raduga15 (2015-06-03 16:04) [0]Пытаюсь авторизоваться в Steam. Раньше я использовал модуль "rsacalc"
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);
end;
Всё прекрасно работало и до сих пор работает, но нужно сделать авторизацию непосредственно в потоке. А модуль "rsacalc" уже там не работает.
От сервера Steam я получаю:
1) Публичный ключ: "DE2C23F5B87C4535CF1241B85ED5DC9C97E2E2A9C411B93F417718D92D4F0294A37A36E8FF1C346 FCB56426405F0CEB59C6BA21EC5C70
F046930B800E830091F62F7B76252458FAB026A0F8ACF59246203EFCA254C057C55A648385A9E27D 29BD0F83802C1C55091884A048E34DBEF316B0AF9B2199CE2
B6C81F258F45E8944CB0F122B4BF2757BD881CE967EC7B5346F7469E8C8F7FE0AAEDBC9B7B300188 6B6D50641961F5CF0D160BD5E7D1BF55D1BAFF8908025773
4D06C171AE3AD69708ACBA119AE5D1DDF1199784170FCF586E982ADB502057C4910ED6FB52E26CF1 37B247DB47A9486140B8BF385113C4578D0749E254E19062
CBE4139E09FBE60775"
2) Публичный экспонент: "010001"
Нужно зашифровать пароль методом RSA и в результате должно получиться что-то вроде этого: http://www.sources.ru/csharp/RSACryptoPad.png
Попытки использования:
Пробовал использовать FGINTauthkey = "DE2C23F5B87C4535CF1241B85ED5DC9C97E2E2A9C411B93F417718D92D4F0294A37A36E8FF1C346 FCB56426405F0CEB59C6BA21EC5C70F046930B800E830091F62F7B76252458FAB026A0F8ACF59246 203EFCA254C057C55A648385A9E27D29BD0F83802C1C55091884A048E34DBEF316B0AF9B2199CE2B 6C81F258F45E8944CB0F122B4BF2757BD881CE967EC7B5346F7469E8C8F7FE0AAEDBC9B7B3001886 B6D50641961F5CF0D160BD5E7D1BF55D1BAFF89080257734D06C171AE3AD69708ACBA119AE5D1DDF 1199784170FCF586E982ADB502057C4910ED6FB52E26CF137B247DB47A9486140B8BF385113C4578 D0749E254E19062CBE4139E09FBE60775";
kexp:="010001";
Base256StringToFGInt(authkey,authkeys);//BASE 256
Base10StringToFGInt(kexp,kexps);//binary
rsaencrypt("password_here", authkeys, kexps, passw);
В результате получаются пустые кубики и другие непонятные иероглифы.
Пытаюсь сделать так: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
Буду рад любому совету, а ещё больше сделанной функции
← →
кгшзх © (2015-06-03 17:51) [1]а что это за ересь?
e := StrToIntDef(Edit2.Text, strtoint(Edit2.Text));
преобразовать строку из эдит2 в интегер, а если не получилось, то все равно преобразовать строку из эдит2 в интегер.
← →
кгшзх © (2015-06-03 18:02) [2]Ну и конечно
ShowMessage("В интегер число влезает только " + IntToStr(SizeOf(integer)) + " байт ; в то время как я пытаюсь запихать туда " + IntToStr(Length(Edit2.text) div 2) + " байт");
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2017.02.12;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.001 c