¿Qué lenguajes de programación admiten secp256k1?

¿Qué lenguajes de programación tienen algunas bibliotecas listas que admiten la curva ECDSA de Bitcoin - secp256k1?

Esta pregunta también podría existir fácilmente en Crypto StackExchange: crypto.stackexchange.com

Respuestas (5)

El proyecto Bouncy Castle permite esto y se ejecuta en Java VM (como se mencionó anteriormente), así como en .NET Runtime . En esta publicación de blog se muestra un ejemplo de su uso en C# . Puede usar la versión .NET de Visual Basic .NET (así como también cualquiera de los otros lenguajes en CLR, obviamente).

Para C++, consulte la biblioteca Crypto++ que admite secp256k1 .

La biblioteca Bouncy Castle brinda soporte para todos los idiomas en Java VM

Esta biblioteca (y ahora una biblioteca derivada llamada Spongy Castle ) se usa en la biblioteca BitCoinJ .

Desafortunadamente, la biblioteca Bouncy Castle se implementó mal en Android, lo que provocó conflictos de código que requirieron soluciones alternativas complejas. Spongy Castle resolvió esos problemas haciendo que las versiones de Java y Android funcionen mucho más limpiamente entre sí.

Hay una discusión interesante sobre la elección de secp256k1 por Satoshi en los foros.

Los idiomas actualmente admitidos por JVM incluyen (y cito):

  • Java
  • Clojure, un dialecto Lisp funcional
  • Groovy, un lenguaje de programación
  • Scala, un lenguaje de programación orientado a objetos y funcional
  • JavaFX Script, un lenguaje de secuencias de comandos dirigido al dominio de aplicaciones de Internet enriquecidas (descontinuado en 2010)
  • JRuby, una implementación de Ruby
  • Jython, una implementación de Python
  • Rhino, una implementación de JavaScript
  • AspectJ, una extensión de Java orientada a aspectos

Modifiqué una biblioteca para Google Go para admitir algunas de las curvas de Koblitz, incluida secp256k1. Está disponible aquí .

Hay una biblioteca C dedicada para esta curva. Esta es probablemente la biblioteca más analizada y probablemente tenga el mejor rendimiento. Los envoltorios para otros idiomas están disponibles.

https://github.com/bitcoin/secp256k1

Recomiendo encarecidamente usar enlaces para la biblioteca oficial https://github.com/bitcoin/secp256k1 .

Implementar una biblioteca segura de Elliptic Curve no es fácil, por lo que usar una aleatoria es una mala idea

Un ejemplo de enlaces a un idioma diferente, aquí hay enlaces oxidados: https://github.com/rust-bitcoin/rust-secp256k1