Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
11 апреля 2014, 3:51:54 PM   # 1
 
 
Сообщения: 1218
Цитировать по имени
цитировать ответ
по умолчанию Re: Исходный код для операций ECDSA в C #

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


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Ищу легкого осуществления основных операций ECDSA, предпочтительно в C #. Если нет C #, то второй выбор будет Java (как это может быть довольно легко перевести на C #), но любой язык лучше, чем ничего.

Я знаю, что есть Надувной замок, однако, что это очень тяжелая взаимосвязано библиотека с большим количеством сложного наследования, который делает разбор вне "необходимые биты" вероятно, больше боли. Я бы предпочел простой плоский набор минимальных классов, но даже разбор из более легкой библиотеки будет лучшим вариантом. Да вообще я подписаться на рассылку "никогда не свернуть свой собственный" теория развития, но это особый случай. Торговец послал мне программируемый смарт набора инструментальных средств разработки для оценки и имеет довольно впечатляющие характеристики. Тем не менее, это смарт-карты, поэтому мы говорим десятки килобайт памяти (комбинированного хранения и оперативной памяти), так что любой код будет необходимо понижаются. SHA-256 (и AES, если я хотел включить, что для отложенной передачи подписания имеют аппаратную поддержку, так что это не проблема. Подвижной реализацию RIPEMD-160 (благодаря Моно исходный код) был довольно тривиально, но ECDSA совершенно другой зверь ,

Bitcoin использует одну статические кривой (secp256k1), поэтому нет необходимости в библиотеке поддержки названных кривых или пользовательского Params кривого, параметры secp256k1 кодированных как константы будут работать нормально.


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


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


11 апреля 2014, 4:32:44 PM   # 2
 
 
Сообщения: 173
Цитировать по имени
цитировать ответ
по умолчанию Re: Исходный код для операций ECDSA в C #

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





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

11 апреля 2014, 8:13:46 PM   # 3
 
 
Сообщений: 36
Цитировать по имени
цитировать ответ
по умолчанию Re: Исходный код для операций ECDSA в C #

Я был в процессе реализации ECDSA с использованием Secp256k1 в C # за последние несколько дней. Я не сделал много испытаний пока (все еще нужно написать несколько автоматизированных тестов!), Ни у меня был код рассмотрен кем-либо, так что я бы настоятельно совет против использования этого в промышленном коде.

После того, как я переработан и прибрано много мой код, я планирую создать хранилище GitHub для него. Я также по-прежнему хотел бы, чтобы сделать этот код более отделенным с различными слоями абстракции для обеспечения лучшего кода контролируемости.

Представление
Я не сделал много испытаний на пути исполнения, но я измерил его примерно в два раза скорость BouncyCastle.NET на одном потоке для ЕС Умножение и ECDSA подписания / Проверки наличия. При использовании многопоточности это было еще более значительное увеличение производительности по сравнению с BouncyCastle.NET (я не цифры на меня извините).

Много производительности основан на том, как быстро класс BigInteger есть. Я использую System.Numerics.BigInteger, которая намного медленнее, чем любит ГПМ. Одна вещь, чтобы иметь в виду, что в отличие от BigInteger BouncyCastle.NET, в System.Numerics.BigInteger является Little Endian.

Включает
ECdsaSigner (подписания / проверки / восстановление)
ECELGamal (публичный / ключ шифрования частного - также генерации ключей)
ECEncryption (это моя не стандартная реализация шифрования с открытым ключом, дешифрования с помощью закрытого ключа. Использование AES в качестве асимметричного шифра и ElGamal как генерации ключей)
ECPoint (делает все ваши ECPoint математика)

Скачать
https://mega.co.nz/#!Ao1H1IYJ! JgCnLuWhMy0MYrldjV5A4H7pg9seICnJZYIj30Y-Exm

Я также осуществил BIP32 (иерархические Детерминированные бумажники) в отдельном проекте (это использует BouncyCastle), так что дайте мне знать, если вы также нуждается в этом.

Если вы чувствуете себя немного щедрым:
15Xi4QCp9wwbXhCniDB2DkgzLjSw49g619
Schalk сейчас офлайн Пожаловаться на Schalk   Ответить с цитированием Мультицитирование сообщения от Schalk Быстрый ответ на сообщение Schalk

11 апреля 2014, 9:32:21 PM   # 4
 
 
Сообщения: 1218
Цитировать по имени
цитировать ответ
по умолчанию Re: Исходный код для операций ECDSA в C #

У меня есть самодельный реализация Erlang для генерации ключа, подписания и проверки. Это в основном набор функций без наследования. Дело в том, для вашего случая, это написано в Erlang.

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

11 апреля 2014, 9:34:00 PM   # 5
 
 
Сообщения: 1218
Цитировать по имени
цитировать ответ
по умолчанию Re: Исходный код для операций ECDSA в C #

Я был в процессе реализации ECDSA с использованием Secp256k1 в C # за последние несколько дней. Я не сделал много испытаний пока (все еще нужно написать несколько автоматизированных тестов!), Ни у меня был код рассмотрен кем-либо, так что я бы настоятельно совет против использования этого в промышленном коде.

После того, как я переработан и прибрано много мой код, я планирую создать хранилище GitHub для него. Я также по-прежнему хотел бы, чтобы сделать этот код более отделенным с различными слоями абстракции для обеспечения лучшего кода контролируемости.

Представление
Я не сделал много испытаний на пути исполнения, но я измерил его примерно в два раза скорость BouncyCastle.NET на одном потоке для ЕС Умножение и ECDSA подписания / Проверки наличия. При использовании многопоточности это было еще более значительное увеличение производительности по сравнению с BouncyCastle.NET (я не цифры на меня извините).

Много производительности основан на том, как быстро класс BigInteger есть. Я использую System.Numerics.BigInteger, которая намного медленнее, чем любит ГПМ. Одна вещь, чтобы иметь в виду, что в отличие от BigInteger BouncyCastle.NET, в System.Numerics.BigInteger является Little Endian.

Включает
ECdsaSigner (подписания / проверки / восстановление)
ECELGamal (публичный / ключ шифрования частного - также генерации ключей)
ECEncryption (это моя не стандартная реализация шифрования с открытым ключом, дешифрования с помощью закрытого ключа. Использование AES в качестве асимметричного шифра и ElGamal как генерации ключей)
ECPoint (делает все ваши ECPoint математика)

Скачать
https://mega.co.nz/#!Ao1H1IYJ! JgCnLuWhMy0MYrldjV5A4H7pg9seICnJZYIj30Y-Exm

Я также осуществил BIP32 (иерархические Детерминированные бумажники) в отдельном проекте (это использует BouncyCastle), так что дайте мне знать, если вы также нуждается в этом.

Если вы чувствуете себя немного щедрым:
15Xi4QCp9wwbXhCniDB2DkgzLjSw49g619

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

12 апреля 2014, 12:58:35 AM   # 6
 
 
Сообщений: 36
Цитировать по имени
цитировать ответ
по умолчанию Re: Исходный код для операций ECDSA в C #

Классно, дайте мне знать, если у вас есть вопросы.

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

12 апреля 2014, 1:32:21 AM   # 7
 
 
Сообщения: 173
Цитировать по имени
цитировать ответ
по умолчанию Re: Исходный код для операций ECDSA в C #

У меня есть самодельный реализация Erlang для генерации ключа, подписания и проверки. Это в основном набор функций без наследования. Дело в том, для вашего случая, это написано в Erlang.

Я все еще хотел бы взглянуть на него, если у вас есть исходный код доступен в Интернете.

Верификатор находится в открытом доступе (https://github.com/ningzhang/bitcoin-message-verifier). Я не расфасованная исходный код для подписания и генерации ключей в Интернете, но я могу отправить вам копию позже сегодня. Пожалуйста PM мне ваш адрес электронной почты, если вы хотите взглянуть на него.
Ning сейчас офлайн Пожаловаться на нин   Ответить с цитированием Мультицитирование сообщения от нин Быстрый ответ на сообщение нин

12 апреля 2014, 2:07:41 PM   # 8
 
 
Сообщения: 1218
Цитировать по имени
цитировать ответ
по умолчанию Re: Исходный код для операций ECDSA в C #

Классно, дайте мне знать, если у вас есть вопросы.

Это было бы большим подспорьем, это может быть довольно трудно выдавливание во времени для работы над проектами, как это! Я вылить вам вечер, когда он находится на GitHub.

Я мог бы поторопился, но у меня желание сделать некоторые "весело" (Не занятости) кодирования сегодня утром. Для того, чтобы избежать дублирования вас много рутинной домашней работой я бросил его на быстрый репо. 
https://github.com/TangibleCryptography/Secp256k1

Я сделал некоторые очень основные рефакторинга (ломка решение в библиотеку классов, демо и тестирования прогнозов). Начали строить некоторые из более основных модульных тестов (хэширование & кодирование base58). Я уже заметил, что некоторые проблемы с подписями. Функция signmessage возвращает сжатый ключ, но подпись основана на несжатом ключе. Скорее всего, мы будем хотеть класс KeyPair который инкапсулирует полный ключ Bitcoin "логика" (Закрытый ключ, открытый ключ, pubkeyhash, адрес и т.д.), что облегчит для выполнения операций подписи без необходимости явно обеспечить сжатым против несжатого установлен правильно. Перед тем, как решить, что я буду делать некоторые более простой рефакторинг использовать некоторые функции гр # языка как методы расширения. Я использовал NUnit для модуля тестирования и он должен вытащить его непосредственно из NuGet, если это необходимо. У меня нет никаких проблем с визуальной внутренней средой тестирования студии (или даже тестовой структурой ReSharper), но я не могу вспомнить, какие версии VS не имеет поддержки тестирования. Я полагал, что Nunit может быть более открытыми для пользователей даже экспресс-версии VS.

Так как это начинается с кода, если вы хотите, чтобы клонировать это ваш GitHub репо идти вперед. У меня нет никаких проблем, принимая это вниз, как только у вас есть общедоступная копия вверх. Если вы хотите, вы можете дать мне совершить доступ или, если я не могу сделать тянуть запросы от вашего репо, все зависит от того, как руки на вас хотят быть. Я бы рекомендовал добавить лицензию (КОПИРОВАНИЕ) к корню репо. Не уверен, что если у вас есть какие-либо предпочтения, если я не вхожу использовать модифицированную BSD (). Наконец, решение более легкий Bitcoin криптография библиотека в C #, а не только Secp256K1 библиотека, поэтому мой шаблонный / Secp256k1 не реально описать сферу точно так это может иметь смысл, чтобы изменить это имя решения и репо что-то более боевых действий ( и менее многословным, чем "легкая крипто библиотека из Bitcoin в C #").


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

13 апреля 2014, 11:04:08 PM   # 9
 
 
Сообщений: 36
Цитировать по имени
цитировать ответ
по умолчанию Re: Исходный код для операций ECDSA в C #

К сожалению, был только за выходные. Я был на самом деле в особняке Ким доткомов для пикника Интернет партии, это был удивительный уик-энд. Интересно, что первый человек, которого я говорил при использовании события, чтобы быть разработчиком в MtGox.

Спасибо за это, но я, вероятно, поставить репозиторий позже на этой неделе, и я дам вам совершить доступ. просто подумал, что это будет выглядеть хорошо иметь что-то вроде этого на мое резюме.

Высокий - ура, что. Я уже записал вопрос с возвратом сжатого ключа каждый раз, это в моем списке психического Todo. Nunit является удивительным, мое личное предпочтение в рамках тестирования, какие насмешливый рамки вы обычно используете? Я вполне поклонник JustMock Telerik в.

Да, мой класс расширений полная неразбериха в данный момент. Каково ваше мнение о продлении срока для строк, как HexToBigInteger, HexToBytes и байт [] ToBigIntegerUnsigned и т.д.? Я не был уверен, что, если они будут лучше храниться как статические методы или методы расширения.

Кроме того, ваш пункт о добавлении в классе KeyPair. Я был не слишком уверен в этом, я знаю, что подобный Bitcoinj использует этот подход. Но я рассматривал, возможно, отделяя вещи немного более, имеющие классы, как:
PrivateKey - тогда PrivateKey будет иметь свойство PublicKey
PublicKey - тогда PublicKey будет иметь свойство PubKeyHash
PubKeyHash - который является по существу адрес Bitcoin, который может представлять с различными способами кодирования.

Я не положил много думал в класс Address. Но я думал о том, может быть, делая адрес класса аннотацию и имеющие классы как PubKeyHashAddress и ScriptHashAddress унаследовав от адреса.

Что ты думаешь?




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

14 апреля 2014, 3:38:53 AM   # 10
 
 
Сообщения: 1218
Цитировать по имени
цитировать ответ
по умолчанию Re: Исходный код для операций ECDSA в C #

Высокий - ура, что. Я уже записал вопрос с возвратом сжатого ключа каждый раз, это в моем списке психического Todo. Nunit является удивительным, мое личное предпочтение в рамках тестирования, какие насмешливый рамки вы обычно используете? Я вполне поклонник JustMock Telerik в.

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

котировка
Да, мой класс расширений полная неразбериха в данный момент. Каково ваше мнение о продлении срока для строк, как HexToBigInteger, HexToBytes и байт [] ToBigIntegerUnsigned и т.д.? Я не был уверен, что, если они будут лучше храниться как статические методы или методы расширения.

Расширения из "правда" типы / классы прост. байт [] -> BigInteger, ULONG ->VarInt и т.д. Расширения от "классы псевдопользователей" становится немного грязнее. Прямо сейчас "наговор" это просто строка поэтому иметь методы расширения прочь из класса строки, которые не применимы для не шестнадцатеричных строк начинает чувствовать себя немного запутано. С другой стороны, я не поклонник статического класса с методами полезности, если нет другого выбора. Мне интересно, если это легкий класс для шестнадцатеричного был бы лучшим выбором дизайна.

Может быть, что-то вроде этого?
Код:
Шестнадцатеричная privHex = новый шестнадцатеричная ("E9873D79C6D87DC0FB6A5778633389F4453213303DA61F20BD67FC233AA33262");

вар aBigInt = privHex.ToBigInteger ();
...
Console.WriteLine ("Private Key (шест) {0}", PrivHex.ToString ());

Не 100% уверен, что до сих пор ходит взад и вперед на том.

котировка
Кроме того, ваш пункт о добавлении в классе KeyPair. Я был не слишком уверен в этом, я знаю, что подобный Bitcoinj использует этот подход. Но я рассматривал, возможно, отделяя вещи немного более, имеющие классы, как:
PrivateKey - тогда PrivateKey будет иметь свойство PublicKey
PublicKey - тогда PublicKey будет иметь свойство PubKeyHash
PubKeyHash - который является по существу адрес Bitcoin, который может представлять с различными способами кодирования.

Ну Адрес является версионируются и контрольная сумма PubKeyHash. Тем не менее, что может работать. если был использован класс KeyPair Я думаю, что это должно быть легким, главным образом, облегчая преобразование между связанными объектами. Я не люблю bitcoinj подход по этому вопросу, как это делает KeyPair (ЭКЕЙ я считаю) класс очень тяжелая и не существует четкого разделения объектов.

котировка
Я не положил много думал в класс Address. Но я думал о том, может быть, делая адрес класса аннотацию и имеющие классы как PubKeyHashAddress и ScriptHashAddress унаследовав от адреса.

Это может работать. Отношения между объектами Bitcoin является сложным, и это делает имея четкое наследование "интересно", Для того, чтобы бросить гаечный ключ в вашей структуре выше, имейте в виду, что WIFPrivateKey и адресатами являются реализации структуры Base58Check (версия + контрольная сумма добавляется к полезной нагрузке, закодированного в base58).
DeathAndTaxes сейчас офлайн Пожаловаться на DeathAndTaxes   Ответить с цитированием Мультицитирование сообщения от DeathAndTaxes Быстрый ответ на сообщение DeathAndTaxes

14 апреля 2014, 11:01:27 AM   # 11
 
 
Сообщения: 765
Цитировать по имени
цитировать ответ
по умолчанию Re: Исходный код для операций ECDSA в C #

Дайте мне знать, как вы получите на. Делал много C # Bitcoin разработчика. Я использую бодрый, но могли бы делать нечто подобное в ближайшее время.
Doof сейчас офлайн Пожаловаться на Doof   Ответить с цитированием Мультицитирование сообщения от Doof Быстрый ответ на сообщение Doof

14 апреля 2014, 3:38:59 PM   # 12
 
 
Сообщения: 1218
Цитировать по имени
цитировать ответ
по умолчанию Re: Исходный код для операций ECDSA в C #

Дайте мне знать, как вы получите на.

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

14 апреля 2014, 9:38:37 PM   # 13
 
 
Сообщения: 1218
Цитировать по имени
цитировать ответ
по умолчанию Re: Исходный код для операций ECDSA в C #

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

16 апреля 2014, 10:34:46 AM   # 14
 
 
Сообщения: 1512
Цитировать по имени
цитировать ответ
по умолчанию Re: Исходный код для операций ECDSA в C #

Дайте мне знать, как вы получите на.

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

20 апреля 2014, 12:52:28 AM   # 15
 
 
Сообщения: 700
Цитировать по имени
цитировать ответ
по умолчанию Re: Исходный код для операций ECDSA в C #

Я не знаю, если это может помочь вам, но я взял последние две недели слишком закодировать Bitcoin порт.

Вы хотите подписать данные?
вар ключ = новый ключ ();
вар сиг = key.Sign (данные)

вы хотите проверить данные?
key.PubKey.Verify (данные, сиг)

Если вы можете получить поездку из BouncyCaslte, пожалуйста, дайте мне знать. (Я не использую тонны материала их библиотеки, так что я думаю, вы можете получить исходный код, перекомпилировать только строгий минимум для ECDSA, связать NBitcoin к нему, и вы хорошо идти)

Я закодирован тонн модульного тестирования, так что вы можете увидеть, если вы что-то сломали, делая это.

Github: https://github.com/NicolasDorier/NBitcoin/blob/master/NBitcoin
Николя Dorier сейчас офлайн Пожаловаться на Николя Dorier   Ответить с цитированием Мультицитирование сообщения от Nicolas Dorier Быстрый ответ на сообщение Николя Dorier



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

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

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

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW