Какие языки программирования поддерживают secp256k1?

Какие языки программирования имеют готовые библиотеки, поддерживающие кривую ECDSA Биткойна — secp256k1?

Этот вопрос легко мог возникнуть и на Crypto StackExchange: crypto.stackexchange.com

Ответы (5)

Проект Bouncy Castle допускает это и работает на виртуальной машине Java (как упоминалось ранее), а также на среде выполнения .NET . Пример его использования в C# показан в этом сообщении блога . Вы можете использовать версию .NET из Visual Basic .NET (а также, очевидно, любой другой язык в CLR).

Для C++ посмотрите на библиотеку Crypto++ , которая поддерживает secp256k1 .

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

Эта библиотека (а теперь и производная библиотека под названием Spongy Castle ) используется в библиотеке BitCoinJ .

Библиотека Bouncy Castle, к сожалению, плохо реализована в Android, что приводит к конфликтам кода, требующим сложных обходных путей. Spongy Castle решил эти проблемы, благодаря чему версии для Java и Android работают гораздо чище друг с другом.

На форумах идет интересное обсуждение выбора Сатоши secp256k1.

Языки , поддерживаемые в настоящее время JVM, включают (и я цитирую):

  • Ява
  • Clojure, функциональный диалект Лиспа
  • Groovy, язык сценариев
  • Scala — объектно-ориентированный и функциональный язык программирования.
  • JavaFX Script, язык сценариев, предназначенный для домена многофункциональных интернет-приложений (прекращено в 2010 г.)
  • JRuby, реализация Ruby
  • Jython, реализация Python
  • Rhino, реализация JavaScript
  • AspectJ, аспектно-ориентированное расширение Java

Я модифицировал библиотеку для Google Go , чтобы она поддерживала несколько кривых Коблица, включая secp256k1. Он доступен здесь .

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

https://github.com/bitcoin/secp256k1

Я настоятельно рекомендую использовать привязки для официальной библиотеки https://github.com/bitcoin/secp256k1 .

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

Пример привязки к другому языку, вот привязка ржавчины: https://github.com/rust-bitcoin/rust-secp256k1