Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
noble-curves — Implementazione JS minimale e verificata di crittografia a curva ellittica. | Kitploit
Strumenti/GitHubGitHub/paulmillr/noble-curves
Strumenti di Crittografia/DecrittografiaAnalisi HashCrittografiaUtilità e FrameworkApprendimento e Formazione
GitHubpaulmillr/noble-curves

noble-curves

Implementazione JS minimale e verificata di crittografia a curva ellittica.

Vedi Repository
9601036627 giorni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Sito web

noble-curves

Implementazione JS minimale e verificata di crittografia a curve ellittiche.

  • 🔒 Verificata da società di sicurezza indipendenti
  • 🪶 Minimale: 15KB (gzip) secp256k1, il codice inutilizzato è escluso dalle tue build
  • 🏎 Veloce: ottimizzata manualmente per le particolarità dei motori JS
  • 🔍 Affidabile: test cross-library / wycheproof garantiscono la correttezza
  • ➰ Curve di Weierstrass, Edwards; firme ECDSA, EdDSA, Schnorr, BLS
  • ✍️ ECDH, hash-to-curve, OPRF, FROST, hash Poseidon, FFT
  • 🔖 Non ripudio (SUF-CMA, SBS) e compatibilità con il consenso (ZIP215) in ed25519, ed448
  • 🥈 Wrapper con API identica su WebCrypto nativo

Le curve hanno progetti gemelli da 5kb secp256k1 & ed25519. Hanno una superficie di attacco più piccola, ma meno funzionalità.

Questa libreria appartiene alla crittografia noble

noble cryptography — set di librerie e strumenti crittografici ad alta sicurezza e facilmente verificabili.

  • Dipendenze zero o minime
  • Codice TypeScript / JS altamente leggibile
  • Release firmate con PGP e build NPM trasparenti
  • Tutte le librerie: ciphers, curves, hashes, post-quantum, 5kb secp256k1 / ed25519
  • Versione WASM: awasm-noble
  • Dai un'occhiata alla homepage per risorse di lettura, documentazione e app costruite con noble

Utilizzo

npm install @noble/curves

deno add jsr:@noble/curves

Supportiamo tutte le principali piattaforme e runtime. Per React Native, potresti aver bisogno di un polyfill per getRandomValues. È disponibile anche un file standalone noble-curves.js.```js // import * from '@noble/curves'; // Error: use sub-imports, to ensure small app size import { secp256k1 } from '@noble/curves/secp256k1.js'; const { secretKey, publicKey } = secp256k1.keygen(); const msg = new TextEncoder().encode('hello noble'); const sig = secp256k1.sign(msg, secretKey); const isValid = secp256k1.verify(sig, msg, publicKey);

- [Firme ECDSA, EdDSA, Schnorr](#ecdsa-eddsa-schnorr-signatures)
- [ECDH: segreti condivisi Diffie-Hellman](#ecdh-diffie-hellman-shared-secrets)
- [webcrypto: wrapper semplificato](#webcrypto-friendly-wrapper)
- [Firme BLS, bls12-381, bn254 aka alt\_bn128](#bls-signatures-bls12-381-bn254-aka-alt_bn128)
- [hash-to-curve: hashing verso punti della curva](#hash-to-curve-hashing-to-curve-points)
- [OPRF](#oprfs) | [Firme soglia FROST](#frost-threshold-signatures)
- [poseidon: hash Poseidon](#poseidon-poseidon-hash) | [fft: Trasformata di Fourier veloce](#fft-fast-fourier-transform) | [utils](#utils-byte-shuffling-conversion)
- Interni: [Aritmetica dei punti](#elliptic-curve-point-math) | [modulare](#modular-modular-arithmetics--finite-fields) | [curve personalizzate](#weierstrass-custom-weierstrass-curve--ecdsa)
- [Specifiche](#specs)
- [Sicurezza](#security) | [Velocità](#speed) | [Aggiornamento](#upgrading) | [Contribuire e testare](#contributing--testing) | [Licenza](#license)

### Firme ECDSA, EdDSA, Schnorr

#### secp256k1, p256, p384, p521, ed25519, ed448, brainpool```js
import { secp256k1, schnorr } from '@noble/curves/secp256k1.js';
import { p256, p384, p521 } from '@noble/curves/nist.js';
import { ed25519 } from '@noble/curves/ed25519.js';
import { ed448 } from '@noble/curves/ed448.js';
import { brainpoolP256r1, brainpoolP384r1, brainpoolP512r1 } from '@noble/curves/misc.js';
for (const curve of [
  secp256k1, schnorr,
  p256, p384, p521,
  ed25519, ed448,
  brainpoolP256r1, brainpoolP384r1, brainpoolP512r1
]) {
  const { secretKey, publicKey } = curve.keygen();
  const msg = new TextEncoder().encode('hello noble');
  const sig = curve.sign(msg, secretKey);
  const isValid = curve.verify(sig, msg, publicKey);
  console.log(curve, secretKey, publicKey, sig, isValid);
}

// Specific private key
import { hexToBytes } from '@noble/curves/utils.js';
const secret2 = hexToBytes('46c930bc7bb4db7f55da20798697421b98c4175a52c630294d75a84b9c126236');
const pub2 = secp256k1.getPublicKey(secret2);

I messaggi vengono sempre sottoposti prima a hash: vedi firma pre-hashed. ECDSA utilizza k deterministico, EdDSA segue RFC 8032, Schnorr (solo secp256k1) segue BIP 340: vedi Specifiche.

Lo schema di firma MuSig2 e la mappatura BIP324 ElligatorSwift per secp256k1 sono disponibili in un pacchetto separato.

ristretto255, decaf448```ts

import { ristretto255, ristretto255_hasher, ristretto255_oprf } from '@noble/curves/ed25519.js'; import { decaf448, decaf448_hasher, decaf448_oprf } from '@noble/curves/ed448.js';

console.log(ristretto255.Point, decaf448.Point);

Consulta [RFC 9496](https://www.rfc-editor.org/rfc/rfc9496) per maggiori informazioni su ristretto255 e decaf448.
Consulta la documentazione separata per [Point](#elliptic-curve-point-math), [hasher](#hash-to-curve-hashing-to-curve-points) e [oprf](#oprfs).

#### Firma pre-hashed```js
import { secp256k1 } from '@noble/curves/secp256k1.js';
import { keccak_256 } from '@noble/hashes/sha3.js';
const { secretKey } = secp256k1.keygen();
const msg = new TextEncoder().encode('hello noble');
// prehash: true (default) - hash using secp256k1.hash (sha256)
const sig = secp256k1.sign(msg, secretKey);
// prehash: false - hash using custom hash
const sigKeccak = secp256k1.sign(keccak_256(msg), secretKey, { prehash: false });

Per impostazione predefinita (prehash: true), sign() e verify() applicano prima l'hash integrato della curva al messaggio: sha256 per secp256k1, sha512 per p521. prehash: false consente di utilizzare un hash personalizzato (ad es. secp256k1 + keccak_256). In noble-curves v1, prehash: false era l'impostazione predefinita.

Recupero delle chiavi pubbliche dalle firme```js

import { secp256k1 } from '@noble/curves/secp256k1.js'; const { secretKey, publicKey } = secp256k1.keygen(); const msg = new TextEncoder().encode('hello noble'); const sigRec = secp256k1.sign(msg, secretKey, { format: 'recovered' }); const publicKey_ = secp256k1.recoverPublicKey(sigRec, msg); // == publicKey

// recovered sig is compact sig with an extra byte const sigNoRec = secp256k1.sign(msg, secretKey, { format: 'compact' }); // sigNoRec == sigRec.slice(1)

// Signature instance const sigInstance = secp256k1.Signature.fromBytes(sigRec, 'recovered');

Il recupero della chiave pubblica è supportato solo con ECDSA. È una semplice operazione matematica:
non ci sono garanzie che la firma sia stata effettivamente eseguita. Una tupla (r, s, h) falsificata viene recuperata in
una chiave pubblica casuale, ma non è fattibile trovare m che porterebbe a questo specifico h falsificato.
Scarica lo strumento