Welche Programmiersprachen unterstützen secp256k1?

Welche Programmiersprachen haben einige fertige Bibliotheken, die die ECDSA-Kurve von Bitcoin unterstützen - secp256k1?

Diese Frage könnte leicht auch auf dem Crypto StackExchange existieren: crypto.stackexchange.com

Antworten (5)

Das Bouncy Castle- Projekt ermöglicht dies und läuft sowohl auf der Java VM (wie bereits erwähnt) als auch auf der .NET Runtime . Ein Beispiel für die Verwendung in C# wird in diesem Blogbeitrag gezeigt . Sie können die .NET-Version von Visual Basic .NET verwenden (sowie natürlich auch alle anderen Sprachen in der CLR).

Sehen Sie sich für C++ die Crypto++- Bibliothek an, die secp256k1 unterstützt .

Die Bouncy Castle -Bibliothek bietet Unterstützung für alle Sprachen auf der Java VM

Diese Bibliothek (und jetzt eine abgeleitete Bibliothek namens Spongy Castle ) wird in der BitCoinJ- Bibliothek verwendet.

Die Bouncy Castle-Bibliothek war in Android leider schlecht implementiert, was zu Codekonflikten führte, die komplexe Problemumgehungen erforderten. Spongy Castle hat diese Probleme gelöst, sodass die Java- und Android-Versionen viel sauberer miteinander arbeiten.

Es gibt eine interessante Diskussion über die Wahl von secp256k1 durch Satoshi in den Foren.

Zu den derzeit von der JVM unterstützten Sprachen gehören (ich zitiere):

  • Java
  • Clojure, ein funktionaler Lisp-Dialekt
  • Groovy, eine Skriptsprache
  • Scala, eine objektorientierte und funktionale Programmiersprache
  • JavaFX Script, eine Skriptsprache, die auf die Rich Internet Application-Domäne abzielt (eingestellt 2010)
  • JRuby, eine Implementierung von Ruby
  • Jython, eine Implementierung von Python
  • Rhino, eine Implementierung von JavaScript
  • AspectJ, eine aspektorientierte Erweiterung von Java

Ich habe eine Bibliothek für Google Go modifiziert , um einige der Koblitz-Kurven zu unterstützen, einschließlich secp256k1. Es ist hier verfügbar .

Für diese Kurve gibt es eine eigene C-Bibliothek. Dies ist wahrscheinlich die am häufigsten untersuchte Bibliothek, und sie hat wahrscheinlich die beste Leistung. Wrapper für andere Sprachen sind verfügbar.

https://github.com/bitcoin/secp256k1

Ich würde dringend empfehlen, Bindungen für die offizielle https://github.com/bitcoin/secp256k1-Bibliothek zu verwenden.

Das Implementieren einer sicheren Elliptic Curve-Bibliothek ist nicht einfach, daher ist die Verwendung einer zufälligen Bibliothek keine gute Idee

Ein Beispiel für Bindungen an eine andere Sprache ist hier eine Rust-Bindung: https://github.com/rust-bitcoin/rust-secp256k1