22 августа 2013, 10:19:14 PM   # 1
 
 
Сообщений: 26
Цитировать по имени
цитировать ответ
по умолчанию Re: secp256k1 ГАРО для .NET!

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


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
https://github.com/joshlang/Secp256k1.NET - Управляемый (.NET) обертка secp256k1 реализации СИПА.

Я только бросил его вместе чуть больше часа назад, так что, очевидно, я не тщательно тестируется, Но до сих пор я проверить блоки до 77700 с ним и его работает нормально. 78100 в настоящее время. 78200! ... Geez это быстро ГАРО = НЕВЕРОЯТНО.

Если кто-то находит какие-либо вопросы или есть вопросы, не стесняйтесь связаться.


EDIT: HOLY MOLY. 100000 ПРОВЕРКИ в 9,8 СЕКУНД!
EDIT СНОВА: ... на одном процессоре (@ 1 (!&! (! (@! $ (# @!%
EDIT РАЗ: ... Doh, я думаю, что он кэширует результаты. Этот тест был проверкой же подпись снова и снова. На blockchain, подпись проверки принимают около 10 мс, в среднем. Тем не менее 100x быстрее, чем бодрые.
EDIT ДЛЯ ЖИЗНИ СВОБОДЫ И СЧАСТЬЯ: Без прилагается отладчик, я легко получать <1 мс в проверке с Sipa
joshlang сейчас офлайн Пожаловаться на joshlang   Ответить с цитированием Мультицитирование сообщения от joshlang Быстрый ответ на сообщение joshlang


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


23 августа 2013, 10:40:02 AM   # 2
 
 
Сообщения: 1148
Цитировать по имени
цитировать ответ
по умолчанию Re: secp256k1 ГАРО для .NET!

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





Тем не менее 100x быстрее, чем бодрые.

Надувной замок занимает 1 секунду на подпись?
TierNolan сейчас офлайн Пожаловаться на TierNolan   Ответить с цитированием Мультицитирование сообщения от TierNolan Быстрый ответ на сообщение TierNolan

23 августа 2013, 12:54:45 PM   # 3
 
 
Сообщений: 26
Цитировать по имени
цитировать ответ
по умолчанию Re: secp256k1 ГАРО для .NET!

Да - ... Сорта Чтобы быть справедливым, она колебалась от 200-1100ms на упругий. 
joshlang сейчас офлайн Пожаловаться на joshlang   Ответить с цитированием Мультицитирование сообщения от joshlang Быстрый ответ на сообщение joshlang

23 августа 2013, 1:03:34 PM   # 4
 
 
Сообщения: 1148
Цитировать по имени
цитировать ответ
по умолчанию Re: secp256k1 ГАРО для .NET!

Да - ... Сорта Чтобы быть справедливым, она колебалась от 200-1100ms на упругий. 

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

23 августа 2013, 1:37:53 PM   # 5
 
 
Сообщения: 1610
Цитировать по имени
цитировать ответ
по умолчанию Re: secp256k1 ГАРО для .NET!

Ну что же вы ожидали? Надувной замок написан на Java, который составляется в байткод и интерпретирован JVM или Dalvik VM. Реализация SIPA находится в C, с ручной настройкой сборки для скорости она выполняется непосредственно на процессоре.
Помните, помните 5 ноября сейчас офлайн Пожаловаться на Помните, помните 5 ноября   Ответить с цитированием Мультицитирование сообщения от Помните помню 5 ноября Быстрый ответ на сообщение Помните, помните 5 ноября

23 августа 2013, 2:01:17 PM   # 6
 
 
Сообщений: 26
Цитировать по имени
цитировать ответ
по умолчанию Re: secp256k1 ГАРО для .NET!

Pssh. Это .NET Надувной не Java

PS не есть нет "толкования" происходит после компиляции. Не Баш на JIT компилятор C # = Спасителем uniprogrammiverse!

Но правда, там определенно не бить руку настроенных оптимизированного C реализации / сборки чего-либо!

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

24 августа 2013, 4:57:29 AM   # 7
 
 
Сообщения: 1428
Цитировать по имени
цитировать ответ
по умолчанию Re: secp256k1 ГАРО для .NET!

Но правда, там определенно не бить руку настроенных оптимизированного C реализации / сборки чего-либо!

Я хотел бы добавить, что это не просто ручной настройкой, оптимизированная реализация общей проверки подписи ECDSA: это вручную настроены и оптимизированы для конкретный эллиптическая кривая, которая использует Биткойн (secp256k1). Кривая на самом деле один из самых простых благословленных NIST, и сипа является оптимизация ниндзя  
etotheipi сейчас офлайн Пожаловаться на etotheipi   Ответить с цитированием Мультицитирование сообщения от etotheipi Быстрый ответ на сообщение etotheipi

24 августа 2013, 1:45:26 PM   # 8
 
 
Сообщений: 26
Цитировать по имени
цитировать ответ
по умолчанию Re: secp256k1 ГАРО для .NET!

Но правда, там определенно не бить руку настроенных оптимизированного C реализации / сборки чего-либо!

Я хотел бы добавить, что это не просто ручной настройкой, оптимизированная реализация общей проверки подписи ECDSA: это вручную настроены и оптимизированы для конкретный эллиптическая кривая, которая использует Биткойн (secp256k1). Кривая на самом деле один из самых простых благословленных NIST, и сипа является оптимизация ниндзя  

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

24 августа 2013, 1:52:24 PM   # 9
 
 
Сообщения: 1610
Цитировать по имени
цитировать ответ
по умолчанию Re: secp256k1 ГАРО для .NET!

Но правда, там определенно не бить руку настроенных оптимизированного C реализации / сборки чего-либо!

Я хотел бы добавить, что это не просто ручной настройкой, оптимизированная реализация общей проверки подписи ECDSA: это вручную настроены и оптимизированы для конкретный эллиптическая кривая, которая использует Биткойн (secp256k1). Кривая на самом деле один из самых простых благословленных NIST, и сипа является оптимизация ниндзя  

Люди, которые на самом деле понимают криптологии, как злые гроссмейстером злодеями Джеймсе Бонде.
Не криптологии отличается от криптографии?
Помните, помните 5 ноября сейчас офлайн Пожаловаться на Помните, помните 5 ноября   Ответить с цитированием Мультицитирование сообщения от Помните помню 5 ноября Быстрый ответ на сообщение Помните, помните 5 ноября

24 августа 2013, 1:59:07 PM   # 10
 
 
Сообщений: 26
Цитировать по имени
цитировать ответ
по умолчанию Re: secp256k1 ГАРО для .NET!

Не криптологии отличается от криптографии?

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

24 августа 2013, 2:24:16 PM   # 11
 
 
Сообщения: 1092
Цитировать по имени
цитировать ответ
по умолчанию Re: secp256k1 ГАРО для .NET!

Кто-нибудь пытался реализацию GPU проверки подписи?
MatthewLM сейчас офлайн Пожаловаться на MatthewLM   Ответить с цитированием Мультицитирование сообщения от MatthewLM Быстрый ответ на сообщение MatthewLM

24 августа 2013, 10:12:33 PM   # 12
 
 
Сообщения: 1148
Цитировать по имени
цитировать ответ
по умолчанию Re: secp256k1 ГАРО для .NET!

Кто-нибудь пытался реализацию GPU проверки подписи?

Это интересно. 

Графические процессоры требуют все, чтобы работать на этапе блокировки, так что, возможно, это не будет работать.

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

хэш-сообщения (32 байта)
подпись (64 байта)
открытый ключ (33 байта)

Затем они могут быть помещены в больших массивах и каждый обрабатывается параллельно.

Код GPU тщеславие пула должен иметь эллиптический кривой двигатель, я полагаю. Это имеет то преимущество, что расчеты кривые могут быть вычислены.

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

28 августа 2013, 2:49:30 AM   # 13
 
 
Сообщения: 116
Цитировать по имени
цитировать ответ
по умолчанию Re: secp256k1 ГАРО для .NET!

В случае, если кто-либо помощи, я использую следующее. Сохраняет вас от необходимости проекта Managed C ++:

Код:

общественный класс ECDSA статического
{

        [DllImport ("secp256k1.dll", EntryPoint = "secp256k1_start", CallingConvention = CallingConvention.Cdecl)]
        частный статический ехЬегп аннулируется StartCrypto ();

        [DllImport ("secp256k1.dll", EntryPoint = "secp256k1_stop", CallingConvention = CallingConvention.Cdecl)]
        частное статический ехЬегп аннулируется StopCrypto ();

        [DllImport ("secp256k1.dll", EntryPoint = "secp256k1_ecdsa_verify", CallingConvention = CallingConvention.Cdecl)]
        общественности статического ехЬегпа INT VerifySignature (байты [] тзд, Int msglen, байты [] сиг, Int siglen, байты [] Публичный, Int pubkeylen);

        [DllImport ("secp256k1.dll", EntryPoint = "secp256k1_ecdsa_sign", CallingConvention = CallingConvention.Cdecl)]
        общественности статической ехЬегп INT SignMessage (байт [] тзд, Int msglen, байт [] сиг, исх INT siglen, байт [] seckey, исх INT Nonce);

        [DllImport ("secp256k1.dll", EntryPoint = "secp256k1_ecdsa_sign_compact", CallingConvention = CallingConvention.Cdecl)]
        общественности статической ехЬегп INT SignCompact (байт [] тзд, Int msglen, байт [] sig64, байт [] seckey, исх INT Nonce, исх INT RECID);

        [DllImport ("secp256k1.dll", EntryPoint = "secp256k1_ecdsa_recover_compact", CallingConvention = CallingConvention.Cdecl)]
        общественности статического ехЬегпа INT RecoverCompact (байты [] тзд, Int msglen, байты [] sig64, байты [] Публичный, исй INT pubkeylen, Int сжаты, Int RECID);

        [DllImport ("secp256k1.dll", EntryPoint = "secp256k1_ecdsa_seckey_verify", CallingConvention = CallingConvention.Cdecl)]
        общественности статической ехЬегп INT VerifySecretKey (байт [] seckey);

        [DllImport ("secp256k1.dll", EntryPoint = "secp256k1_ecdsa_pubkey_verify", CallingConvention = CallingConvention.Cdecl)]
        общественности статического ехЬегпа INT VerifyPublicKey (байты [] Публичный, Int pubkeylen);

        [DllImport ("secp256k1.dll", EntryPoint = "secp256k1_ecdsa_pubkey_create", CallingConvention = CallingConvention.Cdecl)]
        общественности статического ехЬегпа INT PublicKeyFromSecretKey (байты [] Публичная, исй INT pubkeylen, байты [] seckey, Int сжатый);

        [DllImport ("secp256k1.dll", EntryPoint = "secp256k1_ecdsa_pubkey_decompress", CallingConvention = CallingConvention.Cdecl)]
        общественности статического ехЬегпа INT DecompressPublicKey (байты [] Публичный, исй INT pubkeylen);

        [DllImport ("secp256k1.dll", EntryPoint = "secp256k1_ecdsa_pubkey_compress", CallingConvention = CallingConvention.Cdecl)]
        общественности статического ехЬегпа INT CompressPublicKey (байты [] Публичный, исй INT pubkeylen);

        [DllImport ("secp256k1.dll", EntryPoint = "secp256k1_ecdsa_privkey_export", CallingConvention = CallingConvention.Cdecl)]
        общественности статического ехЬегпа INT ExportPrivateKey (байты [] seckey, байты [] privkey, исй INT privkeylen, Int сжатый);

        [DllImport ("secp256k1.dll", EntryPoint = "secp256k1_ecdsa_privkey_import", CallingConvention = CallingConvention.Cdecl)]
        общественности статической ехЬегп INT ImportPrivateKey (байт [] seckey, байт [] privkey, Int privkeylen);

        [DllImport ("secp256k1.dll", EntryPoint = "secp256k1_ecdsa_privkey_tweak_add", CallingConvention = CallingConvention.Cdecl)]
        общественности статического ехЬегпа INT PrivateKeyTweakAdd (байты [] seckey, байты [] настройка);

        [DllImport ("secp256k1.dll", EntryPoint = "secp256k1_ecdsa_pubkey_tweak_add", CallingConvention = CallingConvention.Cdecl)]
        общественности статического ехЬегпа INT PublicKeyTweakAdd (байты [] Публичная, Int pubkeylen, байты [] настройка);

        [DllImport ("secp256k1.dll", EntryPoint = "secp256k1_ecdsa_privkey_tweak_mul", CallingConvention = CallingConvention.Cdecl)]
        общественности статического ехЬегпа INT PrivateKeyTweakMul (байты [] seckey, байты [] настройка);

        [DllImport ("secp256k1.dll", EntryPoint = "secp256k1_ecdsa_pubkey_tweak_mul", CallingConvention = CallingConvention.Cdecl)]
        общественности статического ехЬегпа INT PublicKeyTweakMul (байты [] Публичная, Int pubkeylen, байты [] настройка);

}


Это, вероятно, немного медленнее при подписании сделки из-за pinvokes, когда зацикливание, чтобы найти правильное временное значение, но кроме этого, это чистый C # вместо управляемого C ++.


Edit: на самом деле, теперь, когда я посмотрел на коде немного ближе, это так же быстро, если не быстрее, чем версия управляемого C ++, так как он звонит, управляемый и неуправляемый код в цикле, поэтому он должен сделать PInvoke в петля тоже.

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

28 августа 2013, 2:58:21 AM   # 14
 
 
Сообщения: 1218
Цитировать по имени
цитировать ответ
по умолчанию Re: secp256k1 ГАРО для .NET!

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

28 августа 2013, 2:00:47 PM   # 15
 
 
Сообщений: 26
Цитировать по имени
цитировать ответ
по умолчанию Re: secp256k1 ГАРО для .NET!

В случае, если кто-либо помощи, я использую следующее. Сохраняет вас от необходимости проекта Managed C ++:

Код:
...

Это, вероятно, немного медленнее при подписании сделки из-за pinvokes, когда зацикливание, чтобы найти правильное временное значение, но кроме этого, это чистый C # вместо управляемого C ++.


Edit: на самом деле, теперь, когда я посмотрел на коде немного ближе, это так же быстро, если не быстрее, чем версия управляемого C ++, так как он звонит, управляемый и неуправляемый код в цикле, поэтому он должен сделать PInvoke в петля тоже.

Управляемый C ++ является переменчивым зверем, вы никогда не знаете, где он идет управляемым или родным (эти переходы убийство). По крайней мере, с указанным кодом, вы знаете наверняка, когда это произойдет.


Каждый вызов в один из методов C ++ я при условии, делает 1 нативный вызов, так что 1 переход на вызов .... если не считать звонок в ГСЧ. То же самое с р / вызвать код вывешенным. 

Ваш P / Invoke является удивительным Это будет работать так же хорошо, как моя библиотека. Просто будь осторожен. Я сделал библиотеку C ++, так что я мог бы написать "охрана" код вокруг вызовов. то есть: убедитесь, что ключи / подпись / сообщениями являются правильной длиной (если нет, то они вызывают нарушения прав доступа), обрабатывать одноразовый номер, так что я не облажаться в другом месте, и т.д. Если вам не нужен все это барахло, то круто
joshlang сейчас офлайн Пожаловаться на joshlang   Ответить с цитированием Мультицитирование сообщения от joshlang Быстрый ответ на сообщение joshlang

28 августа 2013, 5:18:04 PM   # 16
 
 
Сообщения: 116
Цитировать по имени
цитировать ответ
по умолчанию Re: secp256k1 ГАРО для .NET!

Каждый вызов в один из методов C ++ я при условии, делает 1 нативный вызов, так что 1 переход на вызов .... если не считать звонок в ГСЧ. То же самое с р / вызвать код вывешенным. 

Ваш P / Invoke является удивительным Это будет работать так же хорошо, как моя библиотека. Просто будь осторожен. Я сделал библиотеку C ++, так что я мог бы написать "охрана" код вокруг вызовов. то есть: убедитесь, что ключи / подпись / сообщениями являются правильной длиной (если нет, то они вызывают нарушения прав доступа), обрабатывать одноразовый номер, так что я не облажаться в другом месте, и т.д. Если вам не нужен все это барахло, то круто

Нет охранников, нет ничего, что не правильно. но вы можете написать миленькую C # обертки для него.

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

28 августа 2013, 10:22:42 PM   # 17
 
 
Сообщений: 26
Цитировать по имени
цитировать ответ
по умолчанию Re: secp256k1 ГАРО для .NET!

Нет охранников, нет ничего, что не правильно. но вы можете написать миленькую C # обертки для него.

Просто для удовольствия, не могли бы вы используете свой .dll через отражатель, чтобы получить быстрый взгляд на сгенерированный код?

Конечно, но почему я?

Хорошо, я ILSpy.

Вот знак (..)

Код:
/// <резюме>Подписать сообщение и возвращает подпись. Возвращает значение NULL в случае неудачи.
/// <Имя параметра ="сообщение">Сообщение подписать. Эти данные не хэшируются. Для использования с Bitcoins, вы, вероятно, хотите дважды SHA256 хэш это перед вызовом этого метода.
/// <Имя параметра ="PrivateKey">Секретный ключ, используемый для подписи сообщения.
общественного небезопасным статический байт [] Подписать (байт [] сообщение, байт [] PrivateKey)
{
если (сообщение == NULL || PrivateKey == NULL)
{
певд ArgumentNullException ();
}
если (privateKey.Length! = 32)
{
певд ArgumentOutOfRangeException (Signatures.PrivateKeyLengthError);
}
если (message.Length! = 32)
{
певд ArgumentOutOfRangeException (Signatures.MessageLengthError);
}
INT messageptr_3D_cp_1 = 0;
INT keyptr_46_cp_1 = 0;
байт [] = Nonce новый байт [32];
байт [] nonceptr_59_cp_0 = Nonce;
INT nonceptr_59_cp_1 = 0;
байт [] подписи = новый байт [72];
байт [] = signatureptr_6A_cp_0 подписи;
INT signatureptr_6A_cp_1 = 0;
INT signaturelen = signature.Length;
байт [] privateKey2;
для (целое х = 0; х < 1000; х ++)
{
Signatures.Randoms.Value.GetBytes (Nonce);
INT результат = <модуль>.secp256k1_ecdsa_sign ((байт *) (&сообщение [messageptr_3D_cp_1]), message.Length, исх signatureptr_6A_cp_0 [signatureptr_6A_cp_1], &signaturelen, (байт *) (&PrivateKey [keyptr_46_cp_1]), реф nonceptr_59_cp_0 [nonceptr_59_cp_1]);
если (результат == 1)
{
если (signaturelen == signature.Length)
{
privateKey2 = подпись;
}
еще
{
байт [] smallsignature = новый байт [signaturelen];
Array.Copy (подпись, 0, smallsignature, 0, signaturelen);
privateKey2 = smallsignature;
}
вернуться privateKey2;
}
}
privateKey2 = NULL;
вернуться privateKey2;
}

А вот проверка,

Код:
/// <резюме>Проверяет, что подпись действительна.
/// <Имя параметра ="сообщение">Сообщение для проверки. Эти данные не хэшируются. Для использования с Bitcoins, вы, вероятно, хотите дважды SHA256 хэш это перед вызовом этого метода.
/// <Имя параметра ="подпись">Подписи для проверки достоверности. Это не должно быть компактным ключ (Использовать RecoverKeyFromCompact вместо этого).
/// <Имя параметра ="ОткрытыйКлюч">Открытый ключ используется для создания подписи.
общественная небезопасным статический Signatures.VerifyResult Проверка (байты [] сообщение, байты [] подпись, байты [] ОткрытыйКлючи)
{
если (сообщение == NULL || подпись == NULL || ОткрытыйКлюч == NULL)
{
певд ArgumentNullException ();
}
если (message.Length! = 32)
{
певд ArgumentOutOfRangeException (Signatures.MessageLengthError);
}
INT messageptr_27_cp_1 = 0;
INT signatureptr_30_cp_1 = 0;
INT keyptr_39_cp_1 = 0;
INT результат = <модуль>.secp256k1_ecdsa_verify ((байт *) (&сообщение [messageptr_27_cp_1]), message.Length, (байт *) (&подпись [signatureptr_30_cp_1]), signature.Length (байт *) (&PublicKey [keyptr_39_cp_1]), publicKey.Length);
INT signature2 = результат;
Signatures.VerifyResult message2;
если (signature2! = -2)
{
если (signature2! = -1)
{
если (signature2! = 0)
{
если (signature2! = 1)
{
message2 = Signatures.VerifyResult.Error;
}
еще
{
message2 = Signatures.VerifyResult.Verified;
}
}
еще
{
message2 = Signatures.VerifyResult.SignatureFailed;
}
}
еще
{
message2 = Signatures.VerifyResult.InvalidPublicKey;
}
}
еще
{
message2 = Signatures.VerifyResult.InvalidSignature;
}
вернуться message2;
}
joshlang сейчас офлайн Пожаловаться на joshlang   Ответить с цитированием Мультицитирование сообщения от joshlang Быстрый ответ на сообщение joshlang

29 августа 2013, 1:23:18 AM   # 18
 
 
Сообщения: 116
Цитировать по имени
цитировать ответ
по умолчанию Re: secp256k1 ГАРО для .NET!

Нет охранников, нет ничего, что не правильно. но вы можете написать миленькую C # обертки для него.

Просто для удовольствия, не могли бы вы используете свой .dll через отражатель, чтобы получить быстрый взгляд на сгенерированный код?

Конечно, но почему я?

Хорошо, я ILSpy.


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



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

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

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

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW