Вверх ↑
Этот топик читают: Гость
Ответов: 152
Рейтинг: 1
#1: 2025-09-12 13:58:59 ЛС | профиль | цитата
Возможно ли как-то вставить код на Python ? Нужно производить арифметику с большими числами, а HiAsm этого не умеет делать к большому сожалению. Например нужно сложить 2 больших числа. На Python это выглядит так:

A = 55066263022277343669578718895168534326250603453777594175500187360389116729240
B = 32670510020758816978083085130507043184471273380659243275938904335757337482424
summa = (A + B)

Может можно вместо Python использовать Delphi ? Еще нужно производить операции по модулю и модульную инверсию. В Python это легко всё делается. Пакет Python у меня не работает. Я так понял нужно поставить компилятор? Где его взять?

Редактировалось 4 раз(а), последний 2025-09-12 14:47:20
карма: 1

0
Ответов: 954
Рейтинг: 203
#2: 2025-09-12 15:35:34 ЛС | профиль | цитата
Andrej77rv, Попробуй так
Add(MainForm,14162385,203,154)
{
Width=954
Height=258
link(onCreate,10721369:doString,[])
}
Add(WinExec,7014996,322,154)
{
FileName="POWERSHELL"
Mode=0
Action="runas"
Point(doConsoleExec)
Point(onConsoleError)
Point(onConsoleResult)
link(FileName,11795667:Value,[])
link(onConsoleError,2814240:doWork2,[])
link(onConsoleResult,2814240:doWork3,[(375,181)])
}
Add(Charset,1678668,392,168)
{
link(onCharset,2931260:doAdd,[])
}
Add(FormatStr,10721369,259,168)
{
Mask="[bigint]$A = '55066263022277343669578718895168534326250603453777594175500187360389116729240'\r\n[bigint]$B = '32670510020758816978083085130507043184471273380659243275938904335757337482424'\r\n''\r\n'A = 55066263022277343669578718895168534326250603453777594175500187360389116729240'\r\n'B = 32670510020758816978083085130507043184471273380659243275938904335757337482424'\r\n''\r\n\r\n\r\n'-----------Сложение-----------'\r\n''\r\n[bigint]($A + $B)\r\n\r\n''\r\n\r\n'-----------Вычитание-----------'\r\n''\r\n[bigint]($A - $B)\r\n\r\n''\r\n\r\n"
link(onFString,7014996:doConsoleExec,[])
}
Add(Memo,2931260,441,168)
{
Width=938
Height=219
Align=5
Font=[Lucida Console,12,0,0,204]
Antialiased=1
ScrollBars=3
}
Add(HubEx,2814240,371,168)
{
link(onEvent,1678668:doCharset,[])
}
Add(Memory,11795667,322,98)
{
Default=String(c:\Windows\Sysnative\WindowsPowerShell\v1.0\powershell.exe)
}


Редактировалось 2 раз(а), последний 2025-09-12 15:57:13
карма: 19

0
Ответов: 152
Рейтинг: 1
#3: 2025-09-12 17:05:23 ЛС | профиль | цитата
Gunta писал(а):
Andrej77rv, Попробуй так


Не работает



Редактировалось 2 раз(а), последний 2025-09-12 17:15:16
карма: 1

0
Ответов: 954
Рейтинг: 203
#4: 2025-09-12 18:00:53 ЛС | профиль | цитата
Andrej77rv писал(а):
Не работает

У меня работает
https://i.mcgl.ru/4sw6A5qoeg


Возможно, ты неправильно копируешь схему

У тебя там дво1ные кавычки а должны быть две одинарные.

--- Добавлено в 2025-09-12 18:08:57




для того, чтобы скопировать схему-код, находящуюся в тегах “code” в буфер обмена, нужно подвести курсор в левый верхний угол области с кодом пока курсор не изменится на указательный палец и щёлкнуть левой кнопкой мыши. Весь код выделится и скопируется в буфер обмена автоматически. Останется только вставить его в поле HiAsm.

Редактировалось 3 раз(а), последний 2025-09-12 18:20:43
карма: 19

0
Ответов: 152
Рейтинг: 1
#5: 2025-09-12 18:35:44 ЛС | профиль | цитата
Gunta писал(а):
У меня работает

Да спасибо получилось. А как выполнить вот этот код?

X=78173298682877769088723994436027545680738210601369041078747105985693655485630
Y=92362876758821804597230797234617159328445543067760556585160674174871431781431

def find_inverse(number, modulus):
return pow(number, -1, modulus)

Gx=55066263022277343669578718895168534326250603453777594175500187360389116729240
Gy=32670510020758816978083085130507043184471273380659243275938904335757337482424

p = 115792089237316195423570985008687907853269984665640564039457584007908834671663

Tochka3 = (Gy - Y) * find_inverse (Gx - X, p) % p

X3 = (Tochka3 ** 2 - X - Gx) % p
Y3 = (Tochka3 * (X - X3) - Y) % p

print(X3,Y3)

А потом что получилось (X3,Y3) ответом заменить X и Y и снова посчитать при нажатии кнопки. И так далее.. Это сложение точек на эллиптической кривой в конечном поле с модулем p.

Редактировалось 4 раз(а), последний 2025-09-12 21:31:30
карма: 1

0
Ответов: 954
Рейтинг: 203
#6: 2025-09-15 06:52:54 ЛС | профиль | цитата
Andrej77rv,

Add(MainForm,14162385,63,147)
{
Width=1131
Height=336
link(onCreate,15584075:doEvent1,[])
}
Add(WinExec,7014996,231,154)
{
FileName="POWERSHELL"
Mode=0
Action="runas"
Point(doConsoleExec)
Point(onConsoleError)
Point(onConsoleResult)
link(FileName,11795667:Value,[])
link(onConsoleError,2814240:doWork2,[])
link(onConsoleResult,2814240:doWork3,[(284,181)])
}
Add(Charset,1678668,301,168)
{
link(onCharset,2931260:doAdd,[])
}
Add(Memo,2931260,371,168)
{
Width=1115
Height=297
Align=5
Font=[Lucida Console,12,0,0,204]
Antialiased=1
ScrollBars=3
}
Add(HubEx,2814240,280,168)
{
link(onEvent,1678668:doCharset,[])
}
Add(Memory,11795667,231,98)
{
Default=String(c:\Windows\Sysnative\WindowsPowerShell\v1.0\powershell.exe)
}
Add(Hub,15584075,133,161)
{
InCount=2
link(onEvent1,2931260:doClear,[(158,167)(158,209)(340,209)(340,181)])
link(onEvent2,10721369:doString,[])
}
Add(Menu,12454084,63,196)
{
Menu=#4:Calc|
link(onSelectStr,15584075:doEvent2,[(109,202)(109,174)])
}
Add(FormatStr,10721369,175,168)
{
Mask="$ecc = [System.Security.Cryptography.ECDsa]::Create([System.Security.Cryptography.ECCurve]::CreateFromFriendlyName('secp256k1'))\r\n$s=$ecc.ExportExplicitParameters($true)\r\n$e=$ecc.ExportParameters($true)\r\n' Curve: '+$e.Curve.Oid.FriendlyName\r\n''\r\n' A='+ -join ($s.Curve.A| % {"""{0:X2}""" -f $_})\r\n' B='+ -join ($s.Curve.B| % {"""{0:X2}""" -f $_})\r\n' Gx='+ -join ($s.Curve.G.X| % {"""{0:X2}""" -f $_})\r\n' Gy='+ -join ($s.Curve.G.Y| % {"""{0:X2}""" -f $_})\r\n' P='+ -join ($s.Curve.Prime| % {"""{0:X2}""" -f $_})\r\n' Order='+ -join ($s.Curve.Order| % {"""{0:X2}""" -f $_})\r\n''\r\n' == Private key =='\r\n' D= '+ -join ($e.D| % {"""{0:X2}""" -f $_})\r\n''\r\n' == Public key =='\r\n' Qx= '+ -join ($e.Q.X| % {"""{0:X2}""" -f $_})\r\n' Qy= '+ -join ($e.Q.Y| % {"""{0:X2}""" -f $_})"
link(onFString,7014996:doConsoleExec,[])
}

карма: 19

0
Ответов: 152
Рейтинг: 1
#7: 2025-09-15 08:40:14 ЛС | профиль | цитата
Gunta писал(а):
Andrej77rv,

Спасибо вам огромное! Я бы поставил плюс, но у меня прав недостаточно

Редактировалось 2 раз(а), последний 2025-09-15 08:41:24
карма: 1

0
Ответов: 4665
Рейтинг: 767
#8: 2025-09-16 20:50:52 ЛС | профиль | цитата
Можно найти код для Delphi: https://wiki.freepascal.org/BigInteger
Вероятно, наиболее просто будет портировать GInt оттуда.
карма: 26

0
Ответов: 152
Рейтинг: 1
#9: 2025-09-17 08:06:51 ЛС | профиль | цитата
Gunta писал(а):
Andrej77rv,

Начал разбираться и не понятно как здесь поменять "Private key" ?

Редактировалось 1 раз(а), последний 2025-09-17 08:09:57
карма: 1

0
9
Сообщение
...
Прикрепленные файлы
(файлы не залиты)