Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
2 декабря 2014, 9:14:55 PM   # 1
 
 
Сообщения: 793
Цитировать по имени
цитировать ответ
по умолчанию Re: Различные значения S из тестового вектора

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


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Я проверка функции подписи я написал против тестовых векторов DeathAndTaxes Вот.  Я получаю правильные значения K, но почему-то разные значения S, и тем не менее все подписи моя функция выплевывает действительны. (Я проверил их от других функций проверки, что я не писал.)

Функция: sign_hash (хэш, privkey), и вы можете просмотреть код (минус некоторые проверки формата входного сигнала и другие ошибки MISC проверки) Вот.

Вот мои doctests:

(Как вы уже догадались, мне нравятся мои hexstrs)

Код:
    >>> sign_hash (sha256 (ByteArray ("Сатоши Накамото", 'UTF-8')),"0000000000000000000000000000000000000000000000000000000000000001")
    '3046022100934b1ea10a4b3c1757e2b0c017d0b6143ce3c9a7e6a4a49860d7a6ab210ee3d8022100dbbd3162d46e9f9bef7feb87c16dc13b4f6568a87f4e83f728e2443ba586675c'

    >>> sign_hash (sha256 (ByteArray ("Все эти моменты будут потеряны во времени, как слезы в дожде. Время умирать...", 'UTF-8')),"0000000000000000000000000000000000000000000000000000000000000001")
    '30460221008600dbd41e348fe5c9465ab92d23e3db8b98b873beecd930736488696438cb6b022100ab8019bbd8b6924cc4099fe625340ffb1eaac34bf4477daa39d0835429094520'

    >>> sign_hash (sha256 (ByteArray ("Сатоши Накамото", 'UTF-8')),"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364140")
    '3046022100fd567d121db66e382991534ada77a6bd3106f0a1098c231e47993447cd6af2d002210094c632f14e4379fc1ea610a3df5a375152549736425ee17cebe10abbc2a2826c'

    >>> sign_hash (sha256 (ByteArray ("Алан Тьюринг", 'UTF-8')),"f8b8af8ce3c7cca5e300d33939540c10d45ce001b8f252bfbc57ba0342904181")
    '304502207063ae83e7f62bbb171798131b4a0564b956930092b33b07b395615d9ec7e15c022100a72033e1ff5ca1ea8d0c99001cb45f0272d3be7525d3049c0d9e98dc7582b857'

    >>> sign_hash (sha256 (ByteArray ("Существует компьютерная болезнь, любой, кто работает с компьютерами, о его знает. Это очень серьезное заболевание, и оно полностью мешает работе. Проблема с компьютером является то, что вы «играть» с ними!", 'UTF-8')),"e91671c46231f833a6406ccbea0e3e392c76c167bac1cb013f6f1013980455c2")
    '3045022100b552edd27580141f3b2a5463048cb7cd3e047b97c9f98076c32dbdf85a68718b0220279fa72dd19bfae05577e06c7c0c1900c371fcd5893f7e1d56a37d30174671f6'

    >>> sign_hash (sha256 (ByteArray ("Все должно быть сделано как можно более простым, но не проще.", 'UTF-8')),"0000000000000000000000000000000000000000000000000000000000000001")
    '3045022033a69cd2065432a30f3d1ce4eb0d59b8ab58c74f27c41a7fdb5696ad4e6108c9022100907f867d799087a2c09be72dbe9c2250a9335f31d94ab034a1f1f4927c021edf'

    >>> sign_hash (sha256 (ByteArray ("Уравнения являются более важными для меня, потому что политика в настоящее время, но это уравнение является то для вечности.", 'UTF-8')),"fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364140")
    '3045022054c4a33c6423d689378f160a7ff8b61330444abb58fb470f96ea16d99d4a2fed022100f8f7dcfbbef10594d6bceee495b1f5543f31278ca75f1a1ea01e936d8e25fc9c'

    >>> sign_hash (sha256 (ByteArray ("Мало того, что незнакомец Вселенной, чем мы думаем, что это чужой, чем мы можем думать.", 'UTF-8')),"fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364140")
    '3045022100ff466a9f1b7b273e2f4c3ffe032eb2e814121ed18ef84665d0f515360dab3dd002206fc95f5132e5ecfdc8e5e6e616cc77151455d46ed48f5589b7db7771a332b283'

Как вы можете видеть из подписи, значения R соответствуют правильным детерминированным значениям K, но мои значения S не совпадают с тестовыми векторов по ссылке выше. Я надеюсь, что кто-то может дать потенциальную причину. (Или, скорее, я надеюсь, что кто-то скажет мне значение DeathAndTaxes' S является неправильным, так как я на самом деле проверены эти подписи, которые я сделал.)
luv2drnkbr сейчас офлайн Пожаловаться на luv2drnkbr   Ответить с цитированием Мультицитирование сообщения от luv2drnkbr Быстрый ответ на сообщение luv2drnkbr


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


2 декабря 2014, 10:34:42 PM   # 2
 
 
Сообщения: 217
Цитировать по имени
цитировать ответ
по умолчанию Re: Различные значения S из тестового вектора

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





Я проверка функции подписи я написал против тестовых векторов DeathAndTaxes Вот.  Я получаю правильные значения K, но почему-то разные значения S, и тем не менее все подписи моя функция выплевывает действительны. (Я проверил их от других функций проверки, что я не писал.)

Как вы можете видеть из подписи, значения R соответствуют правильным детерминированным значениям K, но мои значения S не совпадают с тестовыми векторов по ссылке выше. Я надеюсь, что кто-то может дать потенциальную причину. (Или, скорее, я надеюсь, что кто-то скажет мне значение DeathAndTaxes' S является неправильным, так как я на самом деле проверены эти подписи, которые я сделал.)

Если значения R одинаковы и значение S, то различается значение S, вероятно, сведено на нет (соответствует значению K инвертированного).

Стандартная подпись должна иметь S < N / 2, см Вот.
Таким образом, в качестве последнего шага вашего алгоритма подписи вы должны отрицать его (по модулю N, т.е. S: = N - S), если он больше, чем N / 2.
johoe сейчас офлайн Пожаловаться на johoe   Ответить с цитированием Мультицитирование сообщения от johoe Быстрый ответ на сообщение johoe

3 декабря 2014, 5:11:24 AM   # 3
 
 
Сообщения: 793
Цитировать по имени
цитировать ответ
по умолчанию Re: Различные значения S из тестового вектора

Я проверка функции подписи я написал против тестовых векторов DeathAndTaxes Вот.  Я получаю правильные значения K, но почему-то разные значения S, и тем не менее все подписи моя функция выплевывает действительны. (Я проверил их от других функций проверки, что я не писал.)

Как вы можете видеть из подписи, значения R соответствуют правильным детерминированным значениям K, но мои значения S не совпадают с тестовыми векторов по ссылке выше. Я надеюсь, что кто-то может дать потенциальную причину. (Или, скорее, я надеюсь, что кто-то скажет мне значение DeathAndTaxes' S является неправильным, так как я на самом деле проверены эти подписи, которые я сделал.)

Если значения R одинаковы и значение S, то различается значение S, вероятно, сведено на нет (соответствует значению K инвертированного).

Стандартная подпись должна иметь S < N / 2, см Вот.
Таким образом, в качестве последнего шага вашего алгоритма подписи вы должны отрицать его (по модулю N, т.е. S: = N - S), если он больше, чем N / 2.


Святое дерьмо, что это вопрос сделка тягучесть. Спасибо за это объяснение. Я относительно новые программы, обучение Python, чтобы узнать Bitcoin, и наоборот, так что я не знаю, все входы и выходы из математики ЕС. Свойства математике EC действительно захватывающим, и я продолжаю обучение более интересные вещи об этом все время. Я удостоверюсь, что моя функция всегда выплевывает более низкое значение S.
luv2drnkbr сейчас офлайн Пожаловаться на luv2drnkbr   Ответить с цитированием Мультицитирование сообщения от luv2drnkbr Быстрый ответ на сообщение luv2drnkbr



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

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

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

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW