Post
Topic
Board Кодеры
Re: Iceland secp256k1 сложение точек на кривой
by
Ctrl_A
on 06/06/2025, 18:35:27 UTC
Этот баг дает нереальный эффект. Теперь надо подумать, как сделать этот же эффект при сложении точек или хотя б при умножении точки на число.
Вот Вам простая программка на Python-е, дающая "нереальный эффект", повторяя баг ice.scalar_multiplication. Учтите, что "правильный" баг получите только в случае, если складываемые приват. ключи имеют сумму > N.
Пользуйтесь на здоровье! Не забудьте включить в соавторы после получения признания величайшего открытия.

def Wonder_func():
    print('Два варианта сложения пуб. ключей: простой (корректный) и усложнённый (с нереальным эффектом)')
    p = 115792089237316195423570985008687907853269984665640564039457584007908834671663
    P = input('Пуб. ключ №1 : ')
    Q = input('Пуб. ключ №2 : ')
    px = int(P[2:66], 16)
    py = int(P[66:], 16)
    qx = int(Q[2:66], 16)
    qy = int(Q[66:], 16)
    if (px == qx) and (py == qy):
        py2 = 2 * py
        dydx = (3 * px**2) * pow(py2, -1, p)
    else:
        qpx = qx - px
        dydx = (qy - py) * pow(qpx, -1, p)
    x = (dydx**2 - px - qx) % p
    y = (dydx * (px - x) - py) % p
    R = '04' + hex(x)[2:].zfill(64) + hex(y)[2:].zfill(64)
    print('\nПравильный суммарный пуб. ключ :')
    print(R)
    x0 = 100056811408208733275829432225571761443897154861420255832015183193056831248263
    y0 = 60566526027762671372996215584771165169296852327468804800455915050077397931708
    qpx = x0 - x
    dydx = (y0 - y) * pow(qpx, -1, p)
    x1 = (dydx**2 - x - x0) % p
    y1 = (dydx * (x - x1) - y) % p
    F = '04' + hex(x1)[2:].zfill(64) + hex(y1)[2:].zfill(64)
    print('\nПуб. ключ с "нереальным эффектом" :')
    print(F)


P.S.
Такое ощущение, будто кого-то обманул...