Есть walletgenerator.net, работающий локально. И есть возможность выбрать валюту для генерации адреса, после сбора энтропии. И много там валют. И возвращаются в результате, как правило два значения, приватный ключ и адрес кошелька. И есть блокчейны для этих валют, и возможность просмотреть баланс по адресу.
Вопрос: возможно ли сформировать транзакции локально, и отправить их в соответствующую сеть с помощью приватного ключа?
Кто сколько знает криптовалют которые можно юзать без клиентов, онлайн через их блокчейны?
>>150983 Но блокчейн же вгружает блоки с децентрализованной сети, а значит - имеет с ней связь. Более того, на blockchain.info, при указании приватного ключа, кошелёк добавляется и можно совершать транзакции внутри блокчейна. Значит, блокчейн ещё и может отправлять данные в сеть на обработку, а не только просматривать. Ясное дело, что и одиночный клиент может создавать транзакции и подписывая их своим приватным ключём - отправлять их в сеть напрямую, но нужна программа. Мне же интересно приёмо-передача крипты исключительно онлайн, без этих всяких клиентов в десятки мегабайт, и их цепочек блоков в десятки гигабайт...
Вот был, когда-то brainwallet.org, но сейчас почему-то не работает. Так вот, там было что-то наподобие пикрелейтед.
>>150985 >блокчейн же вгружает блоки Для особо тугих: блокчейн это бд с данными. Она ничего не умеет, она просто лежит на дисках. Сайт блокчейн.инфо всё перечисленное умеет, но это сайт, работающий с блокчейном, а не сам блокчейн.
>>151016 Ось мои любимые + краны с epay: goo.gl/4Pocgp снизу слева И вот 3 брата сатоши-выхрёбывателя, выплата после 6к, за раз 125 сатоши минимум goo.gl/9VqF3j goo.gl/WG05Zx goo.gl/6NTMLC
>>151033 Во-первых, не произношу, а печатаю. Во-вторых, понимаю. В-третьих, ты что, читать не умеешь? В-четвертых, смотри сам туда не свали. В-пятых, блокчейн - дословно, цепочка блоков. Блоки на диске. Речь идёт же идёт о blockchain.info и ему подобным сайтам для онлайн переводов имея лишь приватный ключ.
>>151036 Нет, не всё. На walletgenerator.net, помимо биткоина - есть ещё куча разных валют. Интересует сама технология создания и подписи транзакций приватным ключем с возможностью отправить транзакцию в сеть.
>>151055 Так гугли формат транзакций и создание raw транзакций через консоль, хотя бы для биткоина. Берешь, создаешь и отправляешь любому узлу сети, дальше она рассылается сама и включается в блок.
>>151107 Т. е. 904625697166532776746648320380374280100293470930272690489102837043110636674 всего лишь берется в качестве префикса для генерации приватных ключей? Вижу в адрес ссылки каждого ключа входит http://directory.io/warning:understand-how-this-works!/5Km2kuu7vtFDPpxywn4u3NLpbr5jKpTB3jsuDU2KYEqeXFitbFU
>>150966 (OP) Вот есть, значит, ECDSA. И есть пара ключей, приватный ключ и закрытый ключ. И формат приватного ключа Base58Check. И есть биткоин-адрес, полученный из открытого ключа по пикрелейтед схеме. И не светится открытый ключ в адресе, а Ripemd160 его sha256-хеша.
Есть возможность подписать сообщение приватным ключем, и проверить подпись.
Вопрос. Можно ли использовать открытый и закрытый ключи для шифрования сообщений приватным ключем и расшифровки их публичным с помощью ECDSA? И если да, то как?
>>151178 >приватный ключ и закрытый ключ. Это одно и то же. Более того, в ECDSA публичный ключ можно выдернуть из приватного. >Можно ли использовать ... для шифрования сообщений Нельзя, DSA алгоритмы могут только подписывать\валидировать подпись. Это не RSA. >>150985 Обладая приватным ключем можно на любом ПК создать транзакцию и подписать её. Потом в виде json перенести транзакцию на онлайн тачку и транслировать в биткоин-сеть. Такой подход позволяет хранить ключи на машинах, вообще не подключенных к инету.
>>151185 >Это одно и то же. Более того, в ECDSA публичный ключ можно выдернуть из приватного.
Ну, давай, раз такое дело, зайдём на http://wallet-2sx53n.sakurity.com/#generator и вобьём туда любой приватный ключ, например 5JBeeb8eAurr2w2LGVGp5Kh4Gph3RLDtYshUUcRmMLE4GmZNDNv, и посмотрим соответствующий ему публичный ключ 0468ee4a73cc3dfb44f80fd33c22e97c1a458729dad2b924910d5b6c927afd36a3947d8033f36ef687b9c3456d2419739a5a4afcbb68f555d1fd7685ef84c650bb.
Теперь, проследуем в http://wallet-2sx53n.sakurity.com/#converter, и сконвертируем приватный ключ с base64Check -> в hex, получая вот это 30820113020101042041020101a14403420004a34b99f22c790c4e36b2b3c2c3. Итак, получилось 32 байта. А длина публичного ключа - 65 bytes.
А теперь, скажи, как из приватного ключа можно выдернуть публичный. Алсо, на пике >>151178 ты можешь увидеть аж два 32-байтных числа, входящих в публичный ключ. Такой вопрос напрашивается ещё... Действительно ли публичный ключ единственный для конкретного приватного ключа.
>>151193 Таки-да. Но там не показано, как вычисляется x.
Поэтому, я тут в параллель, JS brainwallet'a всковырнул, и что я вижу?.. gen_pt = curve.getG().multiply(eckey.priv);
Pub же имеет два представления: 1. Uncompressed - константа 0x04 (признак полной записи), + два набора по 32 байта, которые описывают координаты точки x и y. 2. Compressed - координата x. Поскольку x и уравнения кривой достаточно для восстановления координаты y и при восстановлении возникает неопределенность в четности восстанавливаемой координаты y - в байтовом виде compressed-public содержит 33 байта, первый из которых представляет собой одну из двух констант 0x02 или 0x03 (признак короткой записи и указание на четность), за которым следуют 32 байта координаты x точки.
>>151185 >приватный ключ и закрытый ключ. Имел в виду открытый. Паблик кей. >Это одно и то же. ok. >>Обладая приватным ключем можно на любом ПК создать транзакцию и подписать её. Потом в виде json перенести транзакцию на онлайн тачку и транслировать в биткоин-сеть. Такой подход позволяет хранить ключи на машинах, вообще не подключенных к инету. Ok. >Более того, в ECDSA публичный ключ можно выдернуть из приватного. ok. Через G. >DSA алгоритмы могут только подписывать\валидировать подпись. Это не RSA. Ok. Однако ECIES (или ECDH) жи есть. Могут ли эти фичи работать с ключами формата ECDSA? priv - 32 byte, и pub(x, y) - по 256 bit. Ну, чтоб в крайнем случае - просто выдернуть эти числа из ключей.
>>151200 Вот, ещё нарыл инфы: y^2 = x^3 + 7 mod P, где P = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f, простое. Gx = 55066263022277343669578718895168534326250603453777594175500187360389116729240, Gy = 32670510020758816978083085130507043184471273380659243275938904335757337482424, координаты G. (Gx^3+7) mod p = 32748224938747404814623910738487752935528512903530129802856995983256684603122 (Gy^2) mod p = 32748224938747404814623910738487752935528512903530129802856995983256684603122
y = sqrt(x^3+7) (mod P) - два значения y1 и y0, положительное и отрицательное. При этом, y1 = P - y0, и т. к. P - простое, нечётное, то один результатов нечётный, а другой - четный. Указание чётности в первом байте compressed-адреса даёт возможность однозначно восстановить y по x.
>>151204 Точки эллиптической кривой над конечным полем представляют собой группу. Для этой группы определена операция сложения. Мы можем представить умножение числа k на точку G как G+G+..+G с k слагаемыми. C=MG. The way to do multiplication is "double and add". You start with G and double it. That gives you 2G. You double again and get 4G and then 8G and so on. You do this until you have 256 numbers. A private key is just a number, and you multiply it by G. If your private key was 25, then you would do it like this 25 = 11001 (in binary) 25 = 16 + 8 + 1 25 G = 16 G + 8 G + 1 * G You can work out 16G, 8G and G by just doubling G over and over. You then add them together. 16G + 8G + G = 25G Только вот, как это сделать, если имеется две координаты?..
>>151205 Запишем сложение двух точек в виде формулы: пик1. Пусть координатами точки P будут (xp, yp), а координатами точки Q соответственно (xq, yq). Вычислим пик2. И тогда координаты точки P+Q будут равны: R(пик3, пик4). Взято с хабра https://habrahabr.ru/post/188958/
>>151205 >25 = 11001 (in binary) >25 = 16 + 8 + 1 >25 G = 16G + 8G + 1G >16G + 8G + G = 25G
Короче, чтобы получить координаты точки pub(Xpub, Ypub) из priv, priv бьётся по битам, эти биты читаются с конца, и первый разряд - нулевой, Там где бит 0 - ноль пропускается, а там где бит 1 - приписывается 2^N, где N - номер разряда минус 1 (т. к. первый разряд нулевой), и точка G удваивается N раз. Максимум - 2^255, т. е. 255 удвоений точки G, а потом суммирования всех этих удвоенных точек. Потому что, 25 = 11001 (in binary) = 2^0 + 0^1 + 0^2 + 2^3 + 2^4 (с конца читаем бинарник).
Так как координату Ypub можно вычислить из P, значит можно её не учитывать в вычислениях, а оперировать только x-ом. Правильно?
>>151190>>151193 Охуеть, что случилось с моим /cc/? Двое людей знают матчасть, и ни один из них не я, то есть всего как минимум трое. Исход трейдеропетушков явно пошёл на пользу.
>>151204 >y = sqrt(x^3+7) (mod P) - два значения y1 и y0, положительное и отрицательное. При этом, y1 = P - y0, и т. к. P - простое, нечётное, то один результатов нечётный, а другой - четный. Указание чётности в первом байте compressed-адреса даёт возможность однозначно восстановить y по x.
А смотрите какая вилка: 1. y2 = (x3 + 8x + 5) mod 293 - уравнение кривой. 2. Точка на этой кривой. 3. Координаты точки x = 29; y = 127; 4. Точка принадлежит кривой: (x3 + 8x + 5) mod 293 = 24626 mod 293 = y^2 mod 293 = 127^2 mod 293 = 16129 mod 293 = 14;
Однако, sqrt(x3 + 8x + 5) = ±156,92673449734433316074944334497 ≠ 127, а mod 293 ≠ 14 = 17 и 37(если округлить до 157);
В чём дело? Вопрос, возможно ли однозначно вычислить y по x, или нет?
>>151276 >sqrt(x3 + 8x + 5) = ±156,92673449734433316074944334497 ≠ 127 >В чём дело? Проиграл. Добро пожаловать в увлекательный мир вычислений в полях классов вычетов по простому модулю. Следи за пальцами:
x = 29 y = 127 x3 + 8x + 5 = 293 + 8 x 29 + 5 = 24626 = 84 x 293 + 14 ≡ 14 mod 293 y2 = 1272 = 16129 = 55 x 293 + 14 ≡ 14 mod 293
Здесь нельзя просто так вычислить корень, а никаких округлений быть не может. Читай теорию чисел, лолка.
>>151284 Ну, я так понимаю, чтобы получить реальную координату Y(127) - надо не извлекать корень из вот этого кубического многочлена, а вычислить с него модуль 293, и прибавлять к этому модулю 293 до тех пор, пока не получится квадрат. Корень из этого квадрата и есть Y, при условии, что Y - натуральное число. (А если нет?)
И вот ещё, Y ≠ sqrt(x^3 + ax + b) (mod P), т. к. уравнение проверки принадлежности точки эллиптической кривой - имеет вид: Y^2 mod P = (x^3 + ax + b) mod P.
Y^2 mod 293 = (29^3 + 8X + 5) mod 293; (29^3 + 8X + 5) mod 293 = 14; Y^2 mod 293 = 14; 14+293 x 55 = 16129 - квадрат; Y = корень из 16129 = {127, -127}
127^2 = 16129 mod 293 = 14; 16129 - 14/293 = 55 - количество прибавлений числа P к модулю кубического многочлена от P;
Да, это всё хорошо и прекрасно, но смущает число 55, т. е. количество прибавлений P к модулю в этом случае. При условии работы с 256-битными числами - этих прибавлений может быть over9000, и поиск Y таким образом, наверное, будет проще заменить его брутфорсом вероятностным, подобно 1-му пикрелейтед.
Алсо, почитал о Cipolla's algorithm и ваще... Мягко-сказать, запутался... Пришлось поднагадить вопросами на странице обсуждения этого алгоритма, в википедии.
Что ещё?.. А, вот!.. Y = корень из 16129 = {127, -127} пик 2. Положительное и отрицательное. Оба - нечётные. А должно быть четное и нечётное, ибо >>151276 >y1 = P - y0 Или этих игриков 4?..
>>151285 >Y = корень из 16129 = {127, -127} пик 2. >Положительное и отрицательное. Оба - нечётные. -127 ≡ 166 mod 293 А вообще, хуйню несёшь, хохол. Просто хуйню, полнейший бред, не имеющий связи с реальностью. Я тебе сказал, читай теорию чисел, вычисление в полях классов вычетов по простому модулю.
>>151287 -127 ≡ 166 mod 293 Вот, теперь понятно. 166 - нечётное, 127 - четное.
-50 mod 11 = 5 Потому что -50 + 5 x 11 = 5 mod 11 = 5; -50 mod 11 не равно -50/11 = 4 x (11) x [-6], потому, что кольцо. Хотя на калькуляторе - так.
Ну да ладно. >читай теорию Начто мне целая теория, если стоит задача найти 256-битный Y, по известному x, уравнению кривой, и a, b и P.
Вот, например, здесь: бит.ly / 2eiwbGq Сообщение m, кодируется точкой Pm, которая имеет две координаты. Код сообщения M может быть числом, являющимся координатой x. Значит, надо вычислить y!
Ну и ещё вот, пример. Есть публичный ключ биткоина, compressed, с одной координатой. И есть его хеш, соответствующий одному из адресов. Вычислив y - нужно получить второй адрес. Как будешь поступать в случае 256-битных чисел, с этой своей теорией чисел, холоп?
>>151288 >Как будешь поступать в случае 256-битных чисел, с этой своей теорией чисел, холоп? Точно так же, как и с любыми другими, дурачок. Минимальная матчасть нужна, чтобы ты понимал, о чём говоришь, а не пытался брать корень привычным методом, оперировать с рациональными числами на множестве натуральных и не совершал другие подобные ошибки. Когда заботаешь её, то бери любой биндинг к openssl и считай, дело пары часов при совсем кривых руках. Если у тебя аллергия на матан, можешь брать прямо сейчас: быстрее обосрёшься — быстрее сдашься. А ещё можешь попробовать заюзать какую-нибудь библиотеку непосредственно для биткоина.
>>151312 Че ты мне реализацию написал, ты мне напиши обратную операцию или объясни почему этого нельзя сделать или расскажи сюрьекцтивна, биктивна или есть ли у нее взамиооднозначное соответствие между входом и выходом __________________________________________ Еще раз для танкистов, дано 32 битное число x. Сдвигаем x rotr 18, x rotr 7, x shr3. Ксорим между собой три получившихся числа. Получаем ответ. Вопрос: можно ли не зная исходного числа, только из ответа получить исходное число? То есть выполнить обратную оерацию.
>Ксорим >три >числа Уже нет, потому что надо знать на что идёт xor. a xor b = c; прямая c xor b = a; обратная для a c xor a = b; обратная для b А у тебя только c;
Ещё бы спросил, как получить e,f,g,h,x,K при известном temp1 и его формуле: temp1 = h + S3(e) + F1(e,f,g) + Kx;
>>151315 Обозначим биты x как b0, b1, ..., b31 После этих трех операций получится всего четыре числа, каждое из которых записывается через bi (например после rotr 1 будет b31b1b2...b30). Далее ксорим все 4 числа и получаем новое a0a1a2... Получается система вида bi xor bj xor bk xor bl = an, где an известны, а bi- нет. Каждое уравнение решается, только если известны все переменные, кроме одной, как и для обычных уравнений. Впринципе, мы имеем 32 уравнения и 32 неизвестных и все должно решаться, если нет вырожденных уравнений, т.е. когда одно типа a xor b xor c, а другое - b xor a xor c, потому что это одно и то же. Я думаю, проверка в лоб может показать, решается ли или нет.
>>151323 Должен, но слишком муторно. Решение системы, которую я описал выше, методом Гаусса по модулю 2, например, сработает всегда, и даст либо уникальное решение, либо бесконечный набор решений. Формулу для каждого бита может дать метод Крамера, но я не знаю, как его применять в случае модуля 2.
>>151334 Я так понимаю, ты хочешь вычислить все множества результатов при вполне определённых, конкретных битах на входах, верно? При этом, прописав эти множества в виде формул и законов в своей проге, для однозначного определения конкретных бит, исходя из заданного результата, входящего в эти множества. Так? Но, всё-равно - ты получишь только отдельные биты входного значения, а не результат. Ведь, на вход sha256 может быть подан файл, а не строка.
>>151194 >восстанавливаемой координаты y >>151193 >Наверняка у тебя в публичном только точка x, вместо (0x04,x,y). y вычисляется по x при заданной кривой. >>151284 >Следи >теорию чисел >>151285 >поиск Y >>151287 >вычисление в полях классов вычетов по простому модулю >Cipolla's algorithm >Решаем сравнение по модулю >Если сравнение имеет решение – квадратичный вычет по mod p – , то имеются два значения y >Символ Лежандра >надо вычислить y! >надо прибавлять P >пока не получится квадрат >Потом >вычислить корень.
>в случае 256-битных чисел >количество прибавлений >Максимум >2^256 >37352286850747159814055156454415 MIPS-лет >ECDSA, ECIES, ECDH.
Ну, хорошо. Пускай точки на эллиптической кривой получаются только путём операций с генераторной точкой. Дабл и адд. К этим двум операциям, с применением мультипликативных и аддитивных инверсий по модулю - сводится умножение, суммирование, вычитание, получение координат обратной точки с координатой (x, -y mod P), и...Деление? Ведь a/b mod P = a x (b^-1 mod P) mod P.
И пускай, есть сообщение r, и соответствующая ей точка rP(x,y). Задача - получить r из координат точки rP. Это что? Надо разделить rP на P?? Что будет в результате? Число??? Или точка?!! Это что, исходя из пикрелейтед надо каждый char кодировать? Или бит? А как декодировать?
Судя по исходникам, эти ваши ECIES и ECDH тупо юзают AES, а не ECC.
Не более. Вот здесь >>151332 таблица, числа 0, 1, 2...31 над чертой это порядковые номера бит получившегося s0, числа под чертой, например 7, 8, 9,... это порядковые номера бит w[i-15], т.е первая строка под чертой (rotr7 справа) это w[i-15] сдвинутая на 7, втроая строка - w[i-15] сдвинутая на 18, третья- w[i-15] сдвинутая на 3 (я замечу что shr и rotr отличные операции). Так вот получается чтобы получить бит с порядковым номером 0 у s0, нужно поксорить 7, 18 и 3 биты у w[i-15], чтобы получить 1 бит s0, нужно поксорить 8, 19 и 4 биты w[i-15] и т.д. Напомню что задача состоит в нахождении w[i-15] по известному s0. Так вот, можно записать #0 = 7 ^ 18 ^ 3 (# рядом с нулем обозначает что бит с этим порядковым номером принадлежит s0). Так вот теперь можно выразить 7 = #0 ^ 18 ^ 3. Теперь мне нужно так подставить числа, чтобы справа остались только числа с # - то есть выразить например 7 бит через биты s0. И так для всех бит w[i-15]
>>151338 Спасибо, почитаю по этой теме. Я хочу обратить sha256 хеш. То есть по хешу искать строку, хеш от которой есть исходный хеш. y = sha256(x), мне нужно найти x зная y. Суть в том, что размер хеша фиксирован и составляет 256 бит. А размер x может быть любым, то есть возможны коллизии
>>151341 >есть сообщение r, и соответствующая ей точка rP(x,y). >Задача - получить r из координат точки rP. Ебать ты молодец. Это вообще-то задача, на вычислительной сложности которой строятся криптосистемы на эллиптических кривых. k — приватный ключ, kG — публичный. Если бы можно было просто так вычислить k из kG, как думаешь, стали бы этот алгоритм использовать в битке? >>151347 >Я хочу обратить sha256 хеш. Впрочем, судя по всему, тут просто поехавших завезли. А я чёто сперва подумал, что это разговор только умных людей. Деление для EC и обратных хеш им подавай, пиздец просто, охуительные истории.
>>151350 >k — приватный ключ, kG — публичный. Внатуре, только сейчас догнал это. >Если бы можно было просто так вычислить k из kG, как думаешь, стали бы этот алгоритм использовать в битке? Ну, публичный ключ не светится же в битке, а только: бейс -> рипемда -> ша -> его.
>Деление для EC >им подавай Ну, ты что, внатуре предлагаешь, для реал ЕСС асимметричной - каждый бит с точкой ассоциировать, чтоб закодить этими точками сообщение r из пикрелейтед >>151341 и гнать эти точки по открытому каналу в виде шифротекста, а именно - 256-битных x-ов + 256-битных y-ов для каждого бита? Или, раз уж на то пошло, может лучше уже сразу массивы байтовых комбинаций прописать в ассоциациях? Ну а как, тогда, по-другому, достать Бобу открытый текст, закодированный в точку на EC?
>>151353 >и гнать эти точки по открытому каналу в виде шифротекста Тогда ничто не мешает вскрыть исходник и по таблице соответствий восстановить m. Совсем другое дело - если rP шифруется, и получается в результате декрипта. Тогда, имеет смысл прописывать соответствия rP значению бита/байта исходного текста r, Чтобы его извлечь-таки из rP. И раз уж открытый текст r - лишь множитель генераторной точки, а операция деления точки на точку отсутствует, то разумеется, этот множитель может быть связан с координатами кодируемой точки открытого текста rP - только ассоциативно. Значит, нужно указать все возможные соответствия всех возможных результатов умножения открытого текста на P всем возможным входным значениям r (или их компонентам). Имеет ли это смысл при длине блока входящей инфы от Алисы в 256-бит?
>>151356 Операция, обратная сложению удвоенных точек в порядке возрастания и в соответствии с битовой последовательностью числа-множителя в бинарном виде.
>>151353 >публичный ключ не светится же в битке Светится, при отправке ты его должен вписать в транзакцию, иначе её никто не сможет проверить. >>151356 >Что такое деление для ЕС Пикрелейтед. Операция, обратная умножению точки на число, ага. Преобразование (kG, G) -> k. Вычислительно сложное настолько, что не существует известных алгоритомов, позволяющих осуществить её быстрее, чем перебором всех возможных значений. Наверное.
Еще раз: Исходное число: w32w31w30...w2w1 После rotr 7: w7w6...w1w32...w8 После rotr 18: w18w17...w1w32...w17 После shr 3: 000w32w31...w4 После xor пусть получается число a32a31a30...a2a1 где a32 = w32 ^ w7 ^ w18 a31 = w31 ^ w6 ^ w17 ... a1 = w1 ^ w8 ^ w17 ^ w4
a32, a31, ..., a1 известны w32, w31, ..., w1 - неизвестные, их надо найти, 32 переменных Выше записано 32 уравнения. Если среди них нет зависимых, то система всегда решается и дает тебе ответ. Например, методом Гаусса со всеми операциями по модулю 2. Если есть зависимые, то будет набор решений. Полагаю, может быть и так, и так, зависит от w.
>>151364 На простом примере: надо обратить x xor (x ror 1), где x - 4битовый Пусть x = 0101 x ror 1 = 1010 x xor (x ror 1) = 1111, это исходные данные.
Теперь x неизвестен. x = x4x3x2x1 x ror 1 = x1x4x3x2 x xor (x ror 1) = 1111 1 = x4 ^ x1 (^ - xor для краткости) 1 = x3 ^ x4 1 = x2 ^ x3 1 = x1 ^ x2 В матричной форме: 1001|1 1100|1 0110|1 0011|1 Например, первая строка означает 1x4 ^ 0x3 ^ 0x2 ^ 1x1 = 1 (mod 2) Одно зависимое, выкинем: 1100|1 0110|1 0011|1
x3 ^ x4 = 1 Либо x3 = 0, x4 =1, тогда решая дальше получим 0101 либо x3 = 1, x4 = 0, тогда получим 1010. Оба ответа подходят для x xor (x ror 1) = 1111.
Следуя этой логики можно перейти к любой битности и любым хэшам. Только зачем, вот вопрос.
>>151364 Да именно это, теперь можно пытаться решить подставляя одно уравнение в другое и пытаться найти зависимости, которые однозначно укажут как n-й бит w зависит от битов a. Ладно, можно попробовать не искать прямой ответ вида: wn = ax ^ ay ^ az ^ ... (где n, x, y - порядковые номера битов). Но что если найти множество уравнений вида: wn = ax ^ ay ^ az ^ ... ^ wj (где n, x, y, j - порядковые номера битов, где wj - один операнд с типом w. То есть после этого можно записать: wn = res_a1 ^ wj ( где res_a = ax ^ ay ^ az ^ ... ) wn = res_a2 ^ w(j+1)mod32 ... wn = res_a32 ^ w(j+31)mod32
И так для n от 1 до 32. А уже после их проанализировать и составить зависимости. Я например нашел некоторые зависимости, что мешает найти их большую часть и исключить неопределенность определения бита(то есть найти однозначную зависимость одного бита от другого как я написал выше)
>>151365 Как ты получил матричную форму? Как ты определил зависимое?
>>151371 Попробуй заполнить эти свои строки битов для ротра и шифта - единицами. И пропустить потом, циклом через каждый бит первой строки - ноль, глядя на то, какие биты изменяется у шр3. А потом, через каждый бит второй строки, третьей... Так?
>>151371 Не надо пытаться подставлять, эта система всегда решается за 2 прохода. Другое дело, что уже на этапе одного такого преобразования возникают коллизии.
Зависимое есть, т.к. детерминант матрицы 1001 1100 0110 0011 равен 0.
31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0 0|1|0|1|0|1|0|1|0|1|0|1|0|1|0|1|0|1|0|1|0|1|0|1|0|1|0|1|0|1|0|1| x input
>>151365 Я понял >1x4 ^ 0x3 ^ 0x2 ^ 1x1 = 1 (mod 2) гениально, нули же ничего не дают, то же что и x4 ^ x1 >Либо x3 = 0, x4 =1 Здесь достаточно взять x3 = 0 или 1, x4 получится "само" Если x3 = 0, x4 = 1, x2 = 1, x1 = 0: получится 1010
>Следуя этой логики можно перейти к любой битности и любым хэшам. Только зачем, вот вопрос.
Вот здесь не понял вопроса, что значит перейти к любой битности, в твоем примере ты получаешь 2 ответа, это значит что для каких-то двух x, результат x xor (x ror 1) будет одинаковым, а значит функция сюръективна. Не факт что моя функция сюръективна
>>151384 Ну то что результат не особо отличается (а вернее он просто сдвинут) но задачу это не решает. Для "некрасивого" набора бит вида 0101 0010 0001 0101 0011 1010 1110 0110 не проследишь
>>151395 ну так пропиши по 4 варианта входных значений для каждого бита результата тройного xor, и сопоставь затем их так, чтобы если результат не накладывается при обратном rotr и shr - чтобы выбирался другой.
>>151386 > Для "некрасивого" набора бит вида 0101 0010 0001 0101 0011 1010 1110 0110 не проследишь Это число является одним из прообразов: 11110101011110111000000010101100
рассмотрим бит N результата Y при значении 1. Обратная функция двойного xor даёт 4 варианта значений, для N-го бита: x1[N], x2[N], x3[N]. Эти значения - [1, 0, 0]; [0, 0, 1]; [0, 1, 0]; [1, 1, 1], соответственно. Так вот, твоя задача - отобрать из всех таких вариантов те, и только те, в которых значения удовлетворяют следующим условиям: x1[N] = x2[(N-11) mod 32] = x3[(N+4) mod 32], x2[N] = x1[(N+11) mod 32] = x3[(N-17) mod 32], x3[N] = x1[(N-4) mod 32] = x2[(N+17) mod 32], И так, по всем N. Все результаты, не вписывающиеся в эти условия - удаляй с помощью unset, и ты получишь непрерывную последовательность сцепленных, таким образом троек бит.
>>151404 >0101 0010 0001 0101 0011 1010 1110 0110 >11110101011110111000000010101100 Не оно. >>151406 Этот >>151405 - не я. >Что за язык у меня - php;
>Выведи 11110101011110111000000010101100 пожалуйста в виде таблицы На. 31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0| 1|1|1|1|0|1|0|1|0|1|1|1|1|0|1|1|1|0|0|0|0|0|0|0|1|0|1|0|1|1|0|0| input
>>151407 А это - правильно? Ой, ты ж не поксорил. >>151408 >1010 0111 0110 1110 1011 1010 0100 1010 Да. >не равно 1111 0101 0111 1011 1000 0000 1010 1100 Это же вход.
P.S.: Кто нибудь сможет поделить точку на число на эллиптической кривой?
>>151412 11110101011110111000000010101100 = x 01011001111010101111011100000001 = x rotr 7 11100000001010110011110101011110 = x rotr 18 00011110101011110111000000010101 = x shr 3 01010010000101010011101011100110 = xor этих четырех Оно. >>151404
>>151418 LinearSolve, фиг его знает, чем он там решает. Все остальное - просто всякие переводы в нужные форматы, создание матрицы коэффициентов и проверка.
>>151424 >То видимо опечатка, естественно без w4 >Пикчи формируют образ В коде и пикчах - 3 значения и два xor'a, а тут >>151413>>151416 и тут: >>a1 = w1 ^ w8 ^ w17 ^ w4 4 значения и 3 xor'a [soiler], и сходится.[/spoiler]
>>151428 >сходится Сходится в том плане, что: x = 11110101011110111000000010101100; y = ROTR(x, 7) ^ ROTR(x,18) ^ SHR(x, 3) = 10100111011011101011101001001010;
а y ^ ROTR(y, 7) ^ ROTR(y,18) ^ SHR(y, 3) = 11110101011110111000000010101100;
Но это - совпадение и наёбка, а не обратная функция. Потому, что: 11010001100010111101000010110010 input 01100101101000110001011110100001 rotr8 11110100001011001011010001100010 rotr18 00011010001100010111101000010110 shr3 10001011101111101101100111010101 output 10101011000101110111110110110011 output_rotr8 10110110011101010110001011101111 output_rotr18 00010001011101111101101100111010 output_shr3
>>151432 >И что это, почему тройной ксор дает то что должен давать двойной ксор, ааааа >>151439 >x ^ (x rotr 7) ^ (x rotr 18) ^ (x shr 3) дает такой >же результат какой должен давать >(x rotr 7) ^ (x rotr 18) ^ (x shr 3)
А там же xor на результат предыдущего xor'a, вот и совпадение получилось.
Задолбали со своими ксорами. Обратить-то получилось?
И ваще, ITT, EC, ECC (ECDSA, ECIES и ECDH) и точка G обсасывается, а не эти всякие, брутфорсы хешей. ОП
>>151447 >Что делает IntegerDigits[y, 2, dim]? Дополняет нулями до 32 бит слева, чтобы дать 32-битное значение. IntegerDigits[n,b,len] pads the list on the left with zeros to give a list of length len.
IntegerDigits[x, 2, dim] - дополняет слева нулями до 32 бит, RotateRight[IntegerDigits[x, 2, dim], k] - циклически сдвигает вправо на k позиций, FromDigits[RotateRight[IntegerDigits[x, 2, dim], k], 2] - возвращает получившееся число в двоичном виде
>>151451 ROR это rotr. Xor это BitXor[]. mtx после всего получается как на пике. Это просто матрица с 0 и 1, которая делается из двух сдвинутых единичных (зеленая и красная диагонали из 1) и еще одной сдвинутой, от которой отрезано 3 строки (ну, отрезаются столбцы, а потом транспонируется, так что все равно что строки). Это все коэффициенты в системе уравнений, которая потом решается LinearSolve. Например, в 1й строке 1 стоят на 7 и 18 месте С КОНЦА (потому что первым битом принято считать самый правый, то есть нумерацию столбцов лучше делать справа налево). Это отвечает уравнению x7 ^ x18 = a32.
>>151453 Можешь расписать всё это алгоритмом, в виде 1. 2. 3.????? 4. PROFIT! или ссылку на онлайн вольфрам математика или exe под винду чтоб код вставить, не?
>>151455 > Можешь расписать всё это алгоритмом, в виде Относительно x решается СЛАУ вида Mx=y, где y - образ (входное число), x - прообраз, а M - матрица с пика.
>>151458 А, ты там kG на k делить хочешь. Лол, это я тебе и без вычислений скажу: kG/k = G. Только какой смысл в этом вычислении, если k тебе не известен, а известен только kG и G?
>>151459 >это я тебе и без вычислений скажу: kG/k = G. А если замутить что-то вроде: kG / ((x(kG)^3 + ax + b) mod P / (y(kG)^2) mod P) даст ли это что-то интересное?
>>151460 Впрочем, тут уже я затупил: действительно, операция деления точки на число есть, но толку из этого никакого. >x(kG)^3 + ax + b Тут ты вообще точку в степень пытаешься возвести, а потом сложить с числом. Лолшто? >y(G) Кого-кого?
Там же, при умножении элементов строки на столбец, сложение идёт. Взять строку 4, например, в ней - три единичных бита. При совпадении единичных бит в столбце с единичными битами в 4-й строке матрицы: 1x1 + 1x1 + 1x1 уже = 3, а может быть в результате - 1 или 0. Т. е. результат 3 представляется в бинарном виде как 11, записывается результат 1 и одна единица идёт вниз, прибавляясь к следующему результату, я правильно понимаю?
Также, интересна функция LinearSolve из wolfram mathematica (он же весит 6,5 гигов). Eсть ли у неё аналоги на других языках программирования?
>>151478 >x(kG)^3 имелась в виду координата x от точки kG; kG(xkG, ykG); xkG^3 mod P; Короче, если с координатами поиграться, может получатся какие-то интересные точки. Хотя... Забей...
>>151485 32+15+4 = 51 mod 2 = 1, так? Откуда тогда цифры 32, 15, 4? >LinearSolve Я как понял, при M⋅x=y; x = (M-1)⋅y, где M-1 - матрица, обратная матрице М.
>>151534 Используя любой метод для обращения матриц. Только нужно не забывать делать все по модулю 2. Да, вот такой код тоже сработает: inv = Mod[Inverse[mtx]⋅Det[mtx], 2] Mod[inv.IntegerDigits[y, 2, dim], 2] Первый mod можно делать, можно не делать. Делать выгодно, чтобы inv содержал только 1 и 0. Вот эта матрица: http://freetexthost.com/ide12yhn11
>>151536 >Вот эта матрица Как искал? Методом Гаусса-Иордана? >>151537 http://matrix.reshish.ru/inverse.php Здесь, при попытке найти обратную матрицу вообще выдало вообще 5-ти значные отрицательные числа. >это обращает твой хэш Не хеш, а лишь один милипиздрический элемент его. Обратить хеш невозможно в принципе же , не?
>>151539 > Не хеш, а лишь один милипиздрический элемент его. Обратить хеш невозможно в принципе же , не? Да. Искал методом > Inverse[mtx] только там и есть отрицательные дробные значения. Нужно привести их к целым и взять по модулю 2. > inv = Mod[Inverse[mtx]⋅Det[mtx], 2]
в свою очередь: M-1 ⋅ 10001000010111110001100110101100 = 10010100100001010111111011100110 ≠ 01010010000101010011101011100110, хотя 10 последних бит совпадают.
M-1 брал отсюда: >>151537 Каждый бит - считал так: (0⋅0 + 1⋅1 + 2⋅2 + 3⋅3 + ... + 31⋅31) mod 2, (32⋅0 + 33⋅1 + 34⋅2 + ... + 63⋅31) mod 2, и т. д.
При этом, первый множитель в мономах - j-тый индекс столбца конкретной i-той строки матрицы, второй множитель - номер бита входного числа.
>>151555 Здесь кружок занимательной математики. Один начинающий ебанушка пытается что-то понять, полторы продвинутых ебанушки пытаются ему что-то объяснить, один ебанушка скрывает свой уровень и наблюдает.
>>150966 (OP) Как не качать все блоки блокчейна в тяжеловесном Qt-клиенте, а только блоки с определённого заданного? У dogecoin их овер миллион - шизануться можно же. Тут и bootstrap.dat не радует.
>>150966 (OP) Как с блокчейна получить актуальный блок для брутфорса соли (майнинг)? Откуда вообще берутся новые блоки, как они формируются, и где собираются транзакции в блоки? Можно ли вообще как-то майнить в режиме соло через блокчейн без установки каких-либо программ и участия в пулах?
>>151621 >Скачать из сети, не? Не. Не current block, а блок без nonce, к которому её надо подобрать. >Создаются майнерами, не? Где? >как они формируются Куда конкретно? >В блокчейне собираются. После того, как nonce подобрана, и блок готов, да. А до того? >Можно >майнить в режиме соло через блокчейн blockchain.info - тут только пулы. >это так и называется - соло-майнинг Ок. Я так понимаю, нужно скачать bitcoin-Qt, слить все блоки (а их там много), врубить его в режим сервера, и на сервер включить майнер с параметрами: -o http://localhost:8332 -u RPCUSER -p RPCPASS Потому что последний актуальный блок, ещё не сгенерённый и свежие транзакции, прилетают в виде tcp-пакетов прямо в прогу из одноранговой p2p. И чтобы это было, надо загрузить ВСЕ БЛОКИ, ВСЕ 45 ГИГОВ, нафиг_не_нужных_блоков. И как же подключиться к blockchain.info для этого? >можешь считать хэш в уме, а последний блок качать через браузер. Зачем мне последний блок, если за его генерацию уже выплачены битки предыдущему майнеру? Мне надо новый блок сгенерить, я же майнер, ёпт.
И к чему ты Турчина поцепил, он что тоже майнит биток через блокчейн?
>>151618 Да хоть зетафлопсы, неграмотности это не оправдывает.
>как же подключиться к blockchain.info для этого? Перестань называть этот сайт блокчейном. Блокчейн это база данных биткоина. blockchain.info это отдельный сайт, просто показывающий тебе красивый интерфейс для просмотра этой базы.
Так вот, блок 436042 уже сгенерён и вошёл в блокчейн. А блок 436043 ещё нет. Как только соль к нему найдут майнеры - он будобавлен, как и другие последующие. Этот блок, после генерации будет разослан по p2p-сети всем клиентам у которых bitcoin-Qt, и не только, верно?
Так вот, как и откуда его получить, чтобы начать искать nonce?
>>151625 Короче, blockchain.info- это парсер. А block chain дословно блок цепь - цепочка блоков. База в виде bootstrap.dat или blk*.dat. Так легче в башке укладывается всё это.
И есть возможность выбрать валюту
для генерации адреса, после сбора энтропии.
И много там валют.
И возвращаются в результате, как правило два значения, приватный ключ и адрес кошелька.
И есть блокчейны для этих валют, и возможность просмотреть баланс по адресу.
Вопрос: возможно ли сформировать транзакции локально, и отправить их в соответствующую сеть с помощью приватного ключа?
Кто сколько знает криптовалют которые можно юзать без клиентов, онлайн через их блокчейны?