Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
8 июля 2016, 3:37:01 PM   # 1
 
 
Сообщения: 1834
Цитировать по имени
цитировать ответ
по умолчанию Re: C или C ++ кода для проверки Bitcoin адресов

Взлом Биткоин адресов.
500 Биткоинов взломаны в "мозговом кошельке" с паролем "bitcoin is awesome"
Адрес кошелька: 14NWDXkQwcGN1Pd9fboL8npVynD5SfyJAE
Приватный ключ: 5J64pq77XjeacCezwmAr2V1s7snvvJkuAz8sENxw7xCkikceV6e
подробнее...


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Я искал в Интернете в течение некоторого времени, и не нашел конечные C или C ++ функции, которая проверяет Bitcoin адрес. Конечно, есть один Вот но это дает так много ложных ответов, это неприемлемо.

Мне нужны строжайшие наиболее полные и безотказные функции, написанные на С или C ++. Он должен правильно справиться с адреса коротким, как 26 символов. Кроме того, следует понимать, что адрес, начинающийся с 3, также действителен. Если адрес не имеет достаточно 1s или имеет слишком много 1s в начале то функция должна возвращать ложь.

Я считаю, что я не последним разработчиком там в поисках такой самодостаточной функции, так что если вы можете помочь, пожалуйста, внести свой вклад в эту тему.
Гиена сейчас офлайн Пожаловаться на Гиена   Ответить с цитированием Мультицитирование сообщения от Гиена Быстрый ответ на сообщение Гиена


Как заработать Биткоины?
Без вложений. Не майнинг.


8 июля 2016, 4:22:02 PM   # 2
 
 
Сообщения: 139
Цитировать по имени
цитировать ответ
по умолчанию Re: C или C ++ кода для проверки Bitcoin адресов

Получил 1806 Биткоинов
Реальная история.





Вы уверены, что вы хотите ограничить себя только Bitcoin? В зависимости, вы можете поддержать Dogecoin и другие клоны, а также.

Во всяком случае, чтобы решить эту проблему, официальное место, чтобы посмотреть на это будет Bitcoin ядра.
2c0de сейчас офлайн Пожаловаться на 2c0de   Ответить с цитированием Мультицитирование сообщения от 2c0de Быстрый ответ на сообщение 2c0de

8 июля 2016, 4:26:09 PM   # 3
 
 
Сообщения: 1834
Цитировать по имени
цитировать ответ
по умолчанию Re: C или C ++ кода для проверки Bitcoin адресов

Вы уверены, что вы хотите ограничить себя только Bitcoin? В зависимости, вы можете поддержать Dogecoin и другие клоны, а также.

Во всяком случае, чтобы решить эту проблему, официальное место, чтобы посмотреть на это будет Bitcoin ядра.

Да. Ядро имеет validateaddress RPC, которая в основном именно то, что мне нужно. Тем не менее, код сердечника будет слишком переработан. Мне нужна одна функция, автономный, чтобы сделать все это. Его единственная зависимость будет SHA-256.
Гиена сейчас офлайн Пожаловаться на Гиена   Ответить с цитированием Мультицитирование сообщения от Гиена Быстрый ответ на сообщение Гиена

8 июля 2016, 4:31:16 PM   # 4
 
 
Сообщения: 139
Цитировать по имени
цитировать ответ
по умолчанию Re: C или C ++ кода для проверки Bitcoin адресов

может быть, начать с этого места?

https://github.com/keeshux/basic-blockchain-programming

https://github.com/keeshux/basic-blockchain-programming/blob/master/base58.h

2c0de сейчас офлайн Пожаловаться на 2c0de   Ответить с цитированием Мультицитирование сообщения от 2c0de Быстрый ответ на сообщение 2c0de

8 июля 2016, 4:44:15 PM   # 5
 
 
Сообщения: 1834
Цитировать по имени
цитировать ответ
по умолчанию Re: C или C ++ кода для проверки Bitcoin адресов


Что меня смущает больше всего, что шестигранная 0000000000000000000000000000000000000000 является 1111111111111111111114oLvT2 (27 символов), но шестигранная 0000000000000000000000000000000000000001 является 11111111111111111111BZbvjr (26 символов).

20 нулей в начале BTC адреса payoad результатов в адресе длиной 27.
19 нулей в начале BTC адреса полезной нагрузки, а затем байт с десятичным значением 1 результатов в адрес длины 26.

Но теперь все внезапные 17 нулей в начале следуют байт со значением 1 приводит к адресу длиной 27 раз.

Какая логика есть? Говорят, что число 1s в начале адреса зависит от количества нулей в начале адреса полезной нагрузки, но эта зависимость не существует способ тривиального.
Гиена сейчас офлайн Пожаловаться на Гиена   Ответить с цитированием Мультицитирование сообщения от Гиена Быстрый ответ на сообщение Гиена

8 июля 2016, 5:08:03 PM   # 6
 
 
Сообщения: 1246
Цитировать по имени
цитировать ответ
по умолчанию Re: C или C ++ кода для проверки Bitcoin адресов

Но теперь все внезапные 17 нулей в начале следуют байт со значением 1 приводит к адресу длиной 27 раз.

Какая логика есть? Говорят, что число 1s в начале адреса зависит от количества нулей в начале адреса полезной нагрузки, но эта зависимость не существует способ тривиального.
Логика в том, что hash160 с 17 ведущими нулями и 18 байт равен 1, по-прежнему имеет 2 следующие байты, что, даже если ноль, не ведущие. Таким образом, эти оставшиеся 3 байта сцепляется с 4 байта контрольной суммы преобразуется в base58. Это число больше, чем 5 байтов в hash160 с 19 ведущих нулей, так что в результате кодирования больше.
achow101 сейчас офлайн Пожаловаться на achow101   Ответить с цитированием Мультицитирование сообщения от achow101 Быстрый ответ на сообщение achow101

8 июля 2016, 6:02:15 PM   # 7
 
 
Сообщения: 2002
Цитировать по имени
цитировать ответ
по умолчанию Re: C или C ++ кода для проверки Bitcoin адресов

Что меня смущает больше всего, что шестигранная 0000000000000000000000000000000000000000 является 1111111111111111111114oLvT2 (27 символов), но шестигранная 0000000000000000000000000000000000000001 является 11111111111111111111BZbvjr (26 символов).

20 нулей в начале BTC адреса payoad результатов в адресе длиной 27.
19 нулей в начале BTC адреса полезной нагрузки, а затем байт с десятичным значением 1 результатов в адрес длины 26.

Но теперь все внезапные 17 нулей в начале следуют байт со значением 1 приводит к адресу длиной 27 раз.

Какая логика есть? Говорят, что число 1s в начале адреса зависит от количества нулей в начале адреса полезной нагрузки, но эта зависимость не существует способ тривиального.

Давайте ходить по шагам и посмотреть, что происходит:

Начиная с RIPEMD-160 хэша 20 байтов, которые все 0 ...
0000000000000000000000000000000000000000

Добавление версии байт перед (в случае адрес P2PKH, который был бы байт со значением 0).

000000000000000000000000000000000000000000

Теперь у нас есть 21 байт, которые все 0.

Вычислить контрольную сумму на эту величину:

Код:
SHA256 (SHA256 (000000000000000000000000000000000000000000)) =
94a00911c4da27f9271727ffa7a14d8d5588fc0fff9964340ec4065f387e622b

Append первые 4 байта (8 символов) контрольной суммы в хэш-160 RIPEMD с версией байта:
00000000000000000000000000000000000000000094a00911

Временно Игнорирует нулевой байт:
94a00911

Преобразовать значение из шестнадцатеричных в base58:
0x94a00911 знак равно
4oLvT2 (Основание 58)

Каждый ВЕДУЩИЙ 00 BYTE заменяется один 1:
Код:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Соединить 21 из них с 6 base58 цифр:
1111111111111111111114oLvT2

21 "те," плюс 6 base58 цифры = 27 символов



Теперь давайте попробуем то же самое с 19 нулями и байт со значением 1 ...

0000000000000000000000000000000000000001

Добавление версии байт перед (в случае адрес P2PKH, который был бы байт со значением 0).

000000000000000000000000000000000000000001

Теперь у нас есть 20 байт, которые все 0, а затем байт, который представлен в шестнадцатирично- "01"

Вычислить контрольную сумму на эту величину:

Код:
SHA256 (SHA256 (000000000000000000000000000000000000000001)) =
9d35b5b9d5befcf2d6b89994f7f64279b0645d5d4a5f1a6fa2dcc615bbed04ef

Append первые 4 байта (8 символов) контрольной суммы в хэш-160 RIPEMD с версией байта:
0000000000000000000000000000000000000000019d35b5b9

Временно Игнорирует нулевой байт:
019d35b5b9

Преобразовать значение из шестнадцатеричных в base58:
0x019d35b5b9 знак равно
BZbvjr (Основание 58)

Каждый ВЕДУЩИЙ 00 BYTE заменяется один 1:
Код:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Соединить 20 из них с 6 base58 цифр:
111111111111111111111BZbvjr

20 "те," плюс 6 base58 цифры = 26 символов

(Обратите внимание, что число ведущих 0 байт было уменьшено на 1, потому что последний байт был теперь 01, однако число base58 цифр не увеличивается, так как 0x94a00911 и 0x019d35b5b9 могут быть представлены с 6 base58 цифр (4oLvT2 и BZbvjr соответственно).

DannyHamilton сейчас офлайн Пожаловаться на DannyHamilton   Ответить с цитированием Мультицитирование сообщения от DannyHamilton Быстрый ответ на сообщение DannyHamilton

8 июля 2016, 6:13:31 PM   # 8
 
 
Сообщения: 2002
Цитировать по имени
цитировать ответ
по умолчанию Re: C или C ++ кода для проверки Bitcoin адресов

У меня нет времени, чтобы написать код C для вас прямо сейчас, но если вы способны писать свой собственный, процесс проверки адреса Bitcoin (оба P2PKH и P2SH) будет:

1. Преобразовать каждый ведущий "один" до одного байта со значением 0
2. Преобразовать остальные цифры из base58 проклясть
3. Результат должен быть ровно длиной 25 байт, если вы не имеете недопустимый адрес.
4. Убедитесь, что ведущие байты либо значение 0 или значение 5, если вы не имеете недопустимый адрес.
5. Удалите замыкающие 4 байта, оставив вас с шестигранным значением 21 байт.
6. Вычислить SHA256 (SHA256 ()) на 21 байт.
7. Убедитесь в том, что первые 4 байта шага 6 равны 4 байта, удаленных на шаге 5, если вы не имеете недопустимый адрес.
8. Если вы это далеко не определяя, что адрес является недействительным, то адрес является действительным.

(Программно, вы можете найти его проще изменить порядок первых двух шагов)
DannyHamilton сейчас офлайн Пожаловаться на DannyHamilton   Ответить с цитированием Мультицитирование сообщения от DannyHamilton Быстрый ответ на сообщение DannyHamilton

8 июля 2016, 6:26:25 PM   # 9
 
 
Сообщения: 1834
Цитировать по имени
цитировать ответ
по умолчанию Re: C или C ++ кода для проверки Bitcoin адресов

У меня нет времени, чтобы написать код C для вас прямо сейчас, но если вы способны писать свой собственный, процесс проверки адреса Bitcoin (оба P2PKH и P2SH) будет:

1. Преобразовать каждый ведущий "один" до одного байта со значением 0
2. Преобразовать остальные цифры из base58 проклясть
3. Результат должен быть ровно длиной 25 байт, если вы не имеете недопустимый адрес.
4. Убедитесь, что ведущие байты либо значение 0 или значение 5, если вы не имеете недопустимый адрес.
5. Удалите замыкающие 4 байта, оставив вас с шестигранным значением 21 байт.
6. Вычислить SHA256 (SHA256 ()) на 21 байт.
7. Убедитесь в том, что первые 4 байта шага 6 равны 4 байта, удаленных на шаге 5, если вы не имеете недопустимый адрес.
8. Если вы это далеко не определяя, что адрес является недействительным, то адрес является действительным.

(Программно, вы можете найти его проще изменить порядок первых двух шагов)

Большое вам спасибо за это объяснение ранее и для этих инструкций. Я думаю, что теперь я могу полностью понять процесс и в состоянии осуществить необходимый код. Я буду делиться в этой теме позже, когда я закончил. Кроме того, кажется, что libbase58 Библиотека также имеет необходимые функциональные возможности, включенные в него, который я могу немного изменить, чтобы удовлетворить мои требования.
Гиена сейчас офлайн Пожаловаться на Гиена   Ответить с цитированием Мультицитирование сообщения от Гиена Быстрый ответ на сообщение Гиена

8 июля 2016, 8:00:22 PM   # 10
 
 
Сообщения: 1834
Цитировать по имени
цитировать ответ
по умолчанию Re: C или C ++ кода для проверки Bitcoin адресов

Ниже приведен код C Я только что закончил для целей, описанных в ОП.

Код:
#включают
#включают
#включают
#включают
#включают
#включают

/ * На основе libbase58 см https://github.com/luke-jr/libbase58 для справки. * /
/ * Возвращает версию действительного адреса Bitcoin или отрицательное значение, если * /
/ * Адрес недействителен. * /
INT validate_bitcoin_address (Const символ * адрес) {
    статический Const int8_t b58digits_map [] = {
        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
        -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, -1, -1, -1, -1, -1, -1,
        -1, 9,10,11,12,13,14,15, 16, -1,17,18,19,20,21, -1,
        22,23,24,25,26,27,28,29, 30,31,32, -1, -1, -1, -1, -1,
        -1,33,34,35,36,37,38,39, 40,41,42,43, -1,44,45,46,
        47,48,49,50,51,52,53,54, 55,56,57, -1, -1, -1, -1, -1,
    };

    символ без знака addrbin [25];
    size_t addrbinsz = SizeOf (addrbin);

    пустота * бен = (пустота *) addrbin;
    size_t * binszp = &addrbinsz;
    Const символ * b58 = адрес;
    size_t b58sz = StrLen (адрес);

    {
        Const символ без знака * b58u = (недействительными *) B58;
        неподписанный символ * BINU = бен;
        uint32_t Outi [(25 + 3) / 4];
        size_t outisz = (25 + 3) / 4;
        uint64_t т;
        uint32_t с;
        size_t I, J;
        uint8_t bytesleft = 25% 4;
        uint32_t zeromask = bytesleft? (0xffffffff << (Bytesleft * 8)): 0;
        без знака zerocount = 0;

        если (! b58sz) b58sz = StrLen (b58);
        MemSet (Outi, 0, SizeOf (Outi));

        / * Нули, просто подсчитывать * /
        для (я = 0; я < b58sz && b58u [я] == '1'; ++ я) ++ zerocount;
        для (; я < b58sz; ++ я) {
            если (b58u [я] & 0x80) возвращает -1; / * High-бит, установленные на неверной цифре * /
    если (b58digits_map [b58u [I]] == -1) -2 возврата; / * Invalid base58 цифра * /
           
            с = (без знака) b58digits_map [b58u [I]];
            для (J = outisz; j--;) {
                т = ((uint64_t) Outi [J]) * 58 + с;
                с = (т & 0x3f00000000) >> 32;
                Outi [J] = т & 0xffffffff;
            }

            если (с) возвращение -3; / * Номер выходного слишком большой (перенос на следующую int32) * /
            если (Outi [0] & zeromask) -4 возврата; / * Выход номер слишком большой (последний int32 заполнены слишком далеко) * /
        }

        J = 0;
        Переключатель (bytesleft) {
            Случай 3: * (BINU ++) = (Outi [0] &   0xff0000) >> 16;
    Случай 2: * (BINU ++) = (Outi [0] &     0xFF00) >>  8;
    Случай 1: * (BINU ++) = (Outi [0] &       0xff); ++ J;
    по умолчанию: разрыв;
        }

        для (, J < outisz; ++ J) {
            * (BINU ++) = (Outi [J] >> 0x18) & 0xff;
            * (BINU ++) = (Outi [J] >> 0x10) & 0xff;
            * (BINU ++) = (Outi [J] >>    8) & 0xff;
            * (BINU ++) = (Outi [J] >>    0) & 0xff;
        }

        BINU = бен; / * Количество канонического количества base58 байт * /
        для (я = 0; я < 25; ++ я) {
            если (BINU [я]) перерыв;
            --* Binszp;
        }
        * Binszp + = zerocount;
    }

    если (addrbinsz = 25!) возвращение -5;
    если (addrbin [0]! = 0 && addrbin [0] = 5) возврат -6!;

    {
        символ без знака d1 [SHA256_DIGEST_LENGTH], d2 [SHA256_DIGEST_LENGTH];
        SHA256 (SHA256 (addrbin, 21, d1), SHA256_DIGEST_LENGTH, d2);
        если (memcmp (addrbin + 21, d2, 4)) возвращение -7;
    }

    вернуть addrbin [0];
}

INT основных (INT ARGC, символ * ARGV []) {
    Int я;

    для (я = 1; я < ARGC; ++ я) {
        BOOL действует = (validate_bitcoin_address (ARGV [I]) >= 0);
        Е ( "% S есть% s \ п", ARGV [я], действует? "ДЕЙСТВУЕТ." : "ИНВАЛИД!");
    }

    возвращать 0;
}
Гиена сейчас офлайн Пожаловаться на Гиена   Ответить с цитированием Мультицитирование сообщения от Гиена Быстрый ответ на сообщение Гиена

14 июля 2016, 2:35:25 PM   # 11
 
 
Сообщения: 1834
Цитировать по имени
цитировать ответ
по умолчанию Re: C или C ++ кода для проверки Bitcoin адресов

Для полноты картины, вот самодостаточная функция C, которая превращает полезную нагрузку в действительный адрес Bitcoin.

Код:
/ * На основе libbase58 см https://github.com/luke-jr/libbase58 для справки. * /
/ * Попытки преобразовать двоичный вход в формат Base58 и возвращает истинное * /
/ * На успех. * /
статические BOOL generate_bitcoin_address (Const символ без знака * полезной нагрузки, тип символ, символ * B58, size_t * b58sz) {
    неподписанный символ адрес [25];

    адрес [0] = (тип == '1' 0:
                   типа == '3'? 5: 111);
    тетср (адрес + 1, полезная нагрузка, 20);

    символ без знака d1 [SHA256_DIGEST_LENGTH], d2 [SHA256_DIGEST_LENGTH];
    SHA256 (SHA256 (адрес, 21, d1), SHA256_DIGEST_LENGTH, d2);
    тетср (адрес + 21, d2, 4);

    {
        статический Const символ b58digits_ordered [] = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
        Const uint8_t * бен = (Const uint8_t *) адрес;
        ИНТ перенос;
        ssize_t I, J, высокий, zcount = 0;
        size_t размера;
        size_t uzcount = 0;

        в то время как (uzcount < 25 && ! Бен [uzcount]) ++ uzcount;
        zcount = uzcount;
        Размер = (25 - zcount) * 138/100 + 1;
        uint8_t ЬиЕ [((25 - 0) * 138/100 + 1)];
        MemSet (BUF, 0, размер);
        для (я = zcount, высокий = размер - 1; я < 25; ++ я, высокий = J) {
            для переноса (= бен [I], J = размер - 1; (J > высокий) || нести; --j) {
                нести + = 256 * БУФ [J];
                ЬиЕ [J] = несут% 58;
                нести / = 58;
            }
        }

        для (J = 0, J < (Ssize_t) Размер && ! ЬиЕ [J]; ++ j);

        если (* b58sz <= Zcount + Размер - к) {
            * B58sz = zcount + Размер - J + 1;
            вернуться ложным;
        }

        если (zcount) MemSet (B58, '1', zcount);
        для (I = zcount, J < (Ssize_t) размер; ++ я, ++, к) B58 [I] = b58digits_ordered [ЬиЕ [J]];
        b58 [я] = '\ 0';
        * B58sz = + 1;
    }
    возвращает истину;
}
Гиена сейчас офлайн Пожаловаться на Гиена   Ответить с цитированием Мультицитирование сообщения от Гиена Быстрый ответ на сообщение Гиена

14 июля 2016, 2:37:31 PM   # 12
 
 
Сообщения: 156
Цитировать по имени
цитировать ответ
по умолчанию Re: C или C ++ кода для проверки Bitcoin адресов

Что меня смущает больше всего, что шестигранная 0000000000000000000000000000000000000000 является 1111111111111111111114oLvT2 (27 символов), но шестигранная 0000000000000000000000000000000000000001 является 11111111111111111111BZbvjr (26 символов).

20 нулей в начале BTC адреса payoad результатов в адресе длиной 27.
19 нулей в начале BTC адреса полезной нагрузки, а затем байт с десятичным значением 1 результатов в адрес длины 26.

Но теперь все внезапные 17 нулей в начале следуют байт со значением 1 приводит к адресу длиной 27 раз.

Какая логика есть? Говорят, что число 1s в начале адреса зависит от количества нулей в начале адреса полезной нагрузки, но эта зависимость не существует способ тривиального.

Давайте ходить по шагам и посмотреть, что происходит:

Начиная с RIPEMD-160 хэша 20 байтов, которые все 0 ...
0000000000000000000000000000000000000000

Добавление версии байт перед (в случае адрес P2PKH, который был бы байт со значением 0).

000000000000000000000000000000000000000000

Теперь у нас есть 21 байт, которые все 0.

Вычислить контрольную сумму на эту величину:

Код:
SHA256 (SHA256 (000000000000000000000000000000000000000000)) =
94a00911c4da27f9271727ffa7a14d8d5588fc0fff9964340ec4065f387e622b

Append первые 4 байта (8 символов) контрольной суммы в хэш-160 RIPEMD с версией байта:
00000000000000000000000000000000000000000094a00911

Временно Игнорирует нулевой байт:
94a00911

Преобразовать значение из шестнадцатеричных в base58:
0x94a00911 знак равно
4oLvT2 (Основание 58)

Каждый ВЕДУЩИЙ 00 BYTE заменяется один 1:
Код:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Соединить 21 из них с 6 base58 цифр:
1111111111111111111114oLvT2

21 "те," плюс 6 base58 цифры = 27 символов



Теперь давайте попробуем то же самое с 19 нулями и байт со значением 1 ...

0000000000000000000000000000000000000001

Добавление версии байт перед (в случае адрес P2PKH, который был бы байт со значением 0).

000000000000000000000000000000000000000001

Теперь у нас есть 20 байт, которые все 0, а затем байт, который представлен в шестнадцатирично- "01"

Вычислить контрольную сумму на эту величину:

Код:
SHA256 (SHA256 (000000000000000000000000000000000000000001)) =
9d35b5b9d5befcf2d6b89994f7f64279b0645d5d4a5f1a6fa2dcc615bbed04ef

Append первые 4 байта (8 символов) контрольной суммы в хэш-160 RIPEMD с версией байта:
0000000000000000000000000000000000000000019d35b5b9

Временно Игнорирует нулевой байт:
019d35b5b9

Преобразовать значение из шестнадцатеричных в base58:
0x019d35b5b9 знак равно
BZbvjr (Основание 58)

Каждый ВЕДУЩИЙ 00 BYTE заменяется один 1:
Код:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Соединить 20 из них с 6 base58 цифр:
111111111111111111111BZbvjr

20 "те," плюс 6 base58 цифры = 26 символов

(Обратите внимание, что число ведущих 0 байт было уменьшено на 1, потому что последний байт был теперь 01, однако число base58 цифр не увеличивается, так как 0x94a00911 и 0x019d35b5b9 могут быть представлены с 6 base58 цифр (4oLvT2 и BZbvjr соответственно).



Ебена мать! Спасибо за это!
jasonv75 сейчас офлайн Пожаловаться на jasonv75   Ответить с цитированием Мультицитирование сообщения от jasonv75 Быстрый ответ на сообщение jasonv75

14 июля 2016, 2:46:33 PM   # 13
 
 
Сообщения: 1834
Цитировать по имени
цитировать ответ
по умолчанию Re: C или C ++ кода для проверки Bitcoin адресов

Ебена мать! Спасибо за это!

Да, это сообщение от DannyHamilton действительно было очень полезным и познавательным.
Гиена сейчас офлайн Пожаловаться на Гиена   Ответить с цитированием Мультицитирование сообщения от Гиена Быстрый ответ на сообщение Гиена

14 июля 2016, 6:00:01 PM   # 14
 
 
Сообщения: 156
Цитировать по имени
цитировать ответ
по умолчанию Re: C или C ++ кода для проверки Bitcoin адресов

Ебена мать! Спасибо за это!

Да, это сообщение от DannyHamilton действительно было очень полезным и познавательным.

Сжатый и легко понять информацию, как это редко!

Было бы мне потребовалось дней, чтобы выяснить, как преобразование будет работать шаг за шагом, как это.
jasonv75 сейчас офлайн Пожаловаться на jasonv75   Ответить с цитированием Мультицитирование сообщения от jasonv75 Быстрый ответ на сообщение jasonv75

14 июля 2016, 6:18:30 PM   # 15
 
 
Сообщения: 2002
Цитировать по имени
цитировать ответ
по умолчанию Re: C или C ++ кода для проверки Bitcoin адресов

Ебена мать! Спасибо за это!

Да, это сообщение от DannyHamilton действительно было очень полезным и познавательным.

Сжатый и легко понять информацию, как это редко!

Было бы мне потребовалось дней, чтобы выяснить, как преобразование будет работать шаг за шагом, как это.

Честно говоря, ребята, все, что я сделал, прочитал эти две страницы:
https://en.bitcoin.it/wiki/Technical_background_of_version_1_Bitcoin_addresses
https://en.bitcoin.it/wiki/Base58Check_encoding

И вновь заявить его в терминах конкретных ripemd160 хэшей, которые были спрашивали о (все нули, и все нули, за исключением последнего байта).
DannyHamilton сейчас офлайн Пожаловаться на DannyHamilton   Ответить с цитированием Мультицитирование сообщения от DannyHamilton Быстрый ответ на сообщение DannyHamilton

14 июля 2016, 6:31:31 PM   # 16
 
 
Сообщения: 156
Цитировать по имени
цитировать ответ
по умолчанию Re: C или C ++ кода для проверки Bitcoin адресов

Ебена мать! Спасибо за это!

Да, это сообщение от DannyHamilton действительно было очень полезным и познавательным.

Сжатый и легко понять информацию, как это редко!

Было бы мне потребовалось дней, чтобы выяснить, как преобразование будет работать шаг за шагом, как это.

Честно говоря, ребята, все, что я сделал, прочитал эти две страницы:
https://en.bitcoin.it/wiki/Technical_background_of_version_1_Bitcoin_addresses
https://en.bitcoin.it/wiki/Base58Check_encoding

И вновь заявить его в терминах конкретных ripemd160 хэшей, которые были спрашивали о (все нули, и все нули, за исключением последнего байта).


Хорошо ... да, я чувствую себя немного глупо в настоящее время. лол
jasonv75 сейчас офлайн Пожаловаться на jasonv75   Ответить с цитированием Мультицитирование сообщения от jasonv75 Быстрый ответ на сообщение jasonv75

14 июля 2016, 7:26:09 PM   # 17
 
 
Сообщения: 197
Цитировать по имени
цитировать ответ
по умолчанию Re: C или C ++ кода для проверки Bitcoin адресов

Я знаю, что эта тема была решена, но вот что-то полезное

http://rosettacode.org/wiki/Bitcoin/address_validation

может быть багги, хотя!
mavenraven сейчас офлайн Пожаловаться на mavenraven   Ответить с цитированием Мультицитирование сообщения от mavenraven Быстрый ответ на сообщение mavenraven

14 июля 2016, 7:56:34 PM   # 18
 
 
Сообщения: 1834
Цитировать по имени
цитировать ответ
по умолчанию Re: C или C ++ кода для проверки Bitcoin адресов

Я знаю, что эта тема была решена, но вот что-то полезное

http://rosettacode.org/wiki/Bitcoin/address_validation

может быть багги, хотя!

Я на самом деле ссылку на эту страницу в ОП уже. Решения есть очень плохо на самом деле.
Гиена сейчас офлайн Пожаловаться на Гиена   Ответить с цитированием Мультицитирование сообщения от Гиена Быстрый ответ на сообщение Гиена



Как заработать Биткоины?

Bitcoin Wallet * Portefeuille Bitcoin * Monedero Bitcoin * Carteira Bitcoin * Portafoglio Bitcoin * Bitcoin Cüzdan * 比特币钱包

bitcoin-zarabotat.ru
Почта для связи: bitcoin-zarabotat.ru@yandex.ru

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW