Strumento per Generare e Convalidare Password

Strumento professionale per generare e convalidare password che crea password sicure e frasi password memorabili, con supporto alla generazione in batch, garanzia di unicità, valutazione della forza e convalida delle policy. Include un sorgente di numeri casuali crittograficamente sicuro, set di caratteri configurabili, filtro per caratteri simili, statistiche di deduplicazione in batch e funzionalità di copia con un clic. Offre esempi di codice multilingue, una knowledge base sulle password, best practice di sicurezza e strumenti per testare le policy. Tutte le operazioni vengono eseguite localmente nel tuo browser, garantendo privacy e sicurezza.

Generatore di password

Seleziona gruppi di simboli
Consiglio: Escludi caratteri selezionando gruppi o cliccando direttamente sui singoli caratteri.
Risultato

Tester di policy per password

Risultati
  • Lunghezza
  • Minuscole
  • Maiuscole
  • Cifre
  • Simboli
  • Sequenziale
  • Ripetizioni
  • Elenco bloccati
Tutti i controlli vengono eseguiti localmente nel tuo browser.

Generatore di frasi segrete

Le parole vengono selezionate in modo uniforme con casualità crittograficamente sicura (Web Crypto) da un elenco di 1271 parole senza ambiguità; 6 parole forniscono circa 62 bit di entropia — usa 8 parole per maggiore sicurezza.

Promemoria per l'hashing delle password

Argon2id
  • Usa Argon2id con parametri di tipo memory-hard ragionevoli
  • Tempo ≥ 2 passaggi, memoria ≥ 64MB (ottimizza in base all'ambiente)
  • Memorizza un salt unico per ogni utente; puoi usare un pepper a livello applicativo
PBKDF2
  • Scegli SHA-256 o SHA-512 con iterazioni ≥ 210k (ottimizza secondo necessità)
  • Usa un salt unico per ogni hash; supporta aggiornamenti dei parametri
  • Esegui la migrazione a parametri più costosi al successivo accesso dell'utente
BCrypt
  • Imposta il costo tra 10 e 14, in base alle capacità del server
  • Evita problemi di troncamento; esegui l'hash dell'intera password
  • Implementa limitazione della frequenza e monitoraggio sugli endpoint di autenticazione
Riferimento: NIST SP 800-63B, OWASP ASVS. I parametri devono essere allineati alle capacità hardware e agli SLO.

Valutatore di forza delle password

La forza è approssimata dall'entropia: entropia = log2(dimensione del set di caratteri) × lunghezza. Un set di caratteri più ampio e una lunghezza maggiore migliorano la resistenza all'indovinamento.

  • Debole: < 50 bit — Adatto solo per scenari monouso o di basso valore
  • Sufficiente: 50–80 bit — Accettabile per scenari a basso rischio
  • Forte: 80–110 bit — Obiettivo predefinito consigliato
  • Eccellente: > 110 bit — Consigliato per account amministratore o critici

Nota: I modelli di attacco nel mondo reale possono variare; evita di riutilizzare le password e attiva l'autenticazione a più fattori (MFA).

Come Usare

  • Seleziona la lunghezza e il set di caratteri (Minuscolo/Maiuscolo/Cifre/Simboli); abilita facoltativamente Evita Caratteri Simili e Richiedi Ogni
  • Per un controllo più preciso: escludi caratteri specifici o gruppi di caratteri, oppure scegli sottoinsiemi di simboli
  • Scegli quanti password generare, quindi fai clic su Genera; i risultati in batch vengono deduplicati automaticamente e possono essere copiati tutti in una volta
  • Per convalidare password esistenti, usa il Tester di Policy; per frasi password memorabili, usa il Generatore di Frasi Password

Funzionalità

  • Sorgente di numeri casuali crittograficamente sicuro (Web Crypto)
  • Set di caratteri e gruppi di simboli configurabili
  • Filtro per caratteri simili ed esclusioni personalizzate
  • Generazione in batch di 1-100 password, sempre uniche
  • Metriche di forza ed entropia
  • Tester di Policy e Generatore di Frasi Password
  • Esempi di codice multilingue
  • Copia con un clic (singola o tutte)

Esempi di Generazione Password

Sicura
Lunghezza 24, include lettere maiuscole, minuscole, cifre e simboli
Memorabile
Lunghezza 16, include lettere maiuscole, minuscole e cifre; evita caratteri simili

Knowledge Base sulle Password

1) Forza delle Password ed Entropia
  • Entropia ≈ log2(dimensione del set di caratteri) × lunghezza; la lunghezza contribuisce generalmente di più
  • Obiettivi consigliati: Account generali ≥ 80 bit; Account con privilegi elevati/finanziari ≥ 110 bit
  • Set di caratteri più ampio + lunghezza maggiore → maggiore resistenza all'indovinamento
2) Lunghezza vs. Complessità
  • Aggiungere simboli alla cieca è meno efficace che aumentare la lunghezza
  • Evita schemi prevedibili (es., sempre 'Prima lettera maiuscola + numero finale!')
  • Dai priorità a una lunghezza sufficiente, poi aumenta moderatamente la diversità dei caratteri
3) Errori Comuni e Anti-Schemi
  • Sequenze da tastiera (es., qwerty), blocchi ripetuti, compleanni/anni sono facilmente individuati da regole
  • Usare 'password root + suffisso sito' crea varianti riutilizzate, concentra il rischio e rende le password più facili da indovinare
  • Non riutilizzare mai la stessa password su più siti
4) Raccomandazioni per la Gestione delle Password
  • Usa un gestore di password; assicurati password uniche per ogni sito; abilita MFA per account critici
  • Evita di trasmettere password in testo semplice su canali pubblici; usa frasi password 'pronunciabili' quando necessario
  • Cambia immediatamente e rendi uniche le password se si rileva una perdita o un riutilizzo
5) Linee Guida per le Frasi Password
  • Le combinazioni di 4–6 parole casuali sono generalmente sicure e memorabili
  • Usa separatori, iniziali maiuscole e inserisci numeri per aumentare la robustezza e la leggibilità
  • Evita di concatenare direttamente frasi comuni, testi di canzoni o citazioni famose

Best Practice per la Sicurezza delle Password

Buone Prassi
  • Usa una lunghezza sufficiente: 16+ caratteri per account generici, 24+ per quelli critici
  • Per la memorizzazione, preferisci le passphrase; usa un gestore di password per memorizzare password casuali di alta robustezza
  • Abilita l'autenticazione a più fattori (MFA) ogni volta che possibile
  • Non riutilizzare mai le password tra i siti: ogni account deve avere una password unica
Entropia e Robustezza

L'entropia misura l'imprevedibilità basandosi sulla lunghezza e sulla dimensione del set di caratteri: più alto è il numero di bit di entropia, più robusta è tipicamente la password.

  • Priorizza l'aumento della lunghezza per ottenere il massimo guadagno in robustezza
  • Usa più set di caratteri quando possibile
  • Escludere troppi caratteri riduce il pool di caratteri e indebolisce la robustezza
Politiche e Rotazione
  • Preferisci requisiti di lunghezza e liste nere di password comuni/perdute piuttosto che regole di composizione complesse
  • Evita rotazioni obbligatorie frequenti; cambia la password solo quando viene rilevata una violazione o un rischio
  • Usa liste di password compromise per bloccare le password comuni o perdute
Passphrase
  • Usa 4–6 parole casuali unite da separatori, es. lago-CAROTA-pianeta_7
  • Evita citazioni famose, testi di canzoni o altre frasi comuni; la casualità è più importante della "genialità"
  • Per gli account critici, usa un gestore di password per memorizzare password casuali veramente ad alta entropia
Consigli sulle Impostazioni di Generazione
  • «Richiedi ogni set selezionato» garantisce che almeno un carattere di ogni categoria scelta appaia
  • «Evita caratteri simili» migliora la leggibilità ma riduce leggermente la dimensione del pool di caratteri
  • I simboli possono essere limitati a un sottoinsieme supportato dal sistema di destinazione
Archiviazione Server-Side
  • Non memorizzare mai le password in chiaro; usa hashing forte (Argon2id/PBKDF2/Bcrypt) con salt
  • Configura i parametri (memoria/tempo/costo) in modo appropriato; valuta l'uso del pepper quando necessario
  • Limita le tentativi di accesso e monitora i fallimenti; applica CAPTCHA o verifica del dispositivo durante gli attacchi
Autenticazione a Più Fattori e Recupero
  • Preferisci TOTP o chiavi hardware; evita l'SMS ogni volta che possibile
  • Proteggi i flussi di recupero con verifica a più fattori o email e impone periodi di attesa
  • Fornisci codici di recupero di backup e incoraggia gli utenti a memorizzarli in modo sicuro
Protezione contro la Forza Bruta
  • Implementa ritardi progressivi o blocchi con valutazione del rischio IP/dispositivo
  • Applica WAF e limitazione di velocità alle API e ai moduli di accesso
  • Monitora l'attacco di credential stuffing e incoraggia gli utenti ad adottare password uniche
Archiviazione Locale e Gestione
  • Usa un gestore di password affidabile per l'archiviazione e la compilazione automatica
  • Non condividere mai le password in chiaro tramite chat o email; utilizza strumenti di gestione segreti per i team
  • Se scrivi le password offline, assicurati della sicurezza fisica
Avviso: Questo strumento genera password localmente nel tuo browser utilizzando Web Crypto; nessun dato viene inviato a server terzi.

Come generare password tramite linguaggi di programmazione

JavaScript (Web Crypto)
function randomPassword(length = 16, sets = {lower:true, upper:true, digits:true, symbols:true}) {
  const pools = {
    lower: 'abcdefghijklmnopqrstuvwxyz',
    upper: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
    digits: '0123456789',
    symbols: '!@#$%^&*+-=_~`|/?()[]{}<>,.;:\'\"'
  };
  let pool = '';
  for (const k of Object.keys(sets)) if (sets[k]) pool += pools[k];
  if (!pool) throw new Error('No charset');
  // Rejection sampling removes modulo bias
  const limit = Math.floor(0x100000000 / pool.length) * pool.length;
  const buf = new Uint32Array(1);
  let out = '';
  for (let i = 0; i < length; i++) {
    do { crypto.getRandomValues(buf); } while (buf[0] >= limit);
    out += pool[buf[0] % pool.length];
  }
  return out;
}
Python (secrets)
import secrets

def random_password(length=16, lower=True, upper=True, digits=True, symbols=True):
    pools = {
        'lower': 'abcdefghijklmnopqrstuvwxyz',
        'upper': 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
        'digits': '0123456789',
        'symbols': '!@#$%^&*+-=_~`|/?()[]{}<>,.;:\'\"'
    }
    pool = ''.join(v for k, v in pools.items() if locals()[k])
    if not pool:
        raise ValueError('No charset')
    return ''.join(secrets.choice(pool) for _ in range(length))
PHP (random_int)
function random_password($length = 16, $sets = ['lower'=>true,'upper'=>true,'digits'=>true,'symbols'=>true]) {
    $pools = [
        'lower' => 'abcdefghijklmnopqrstuvwxyz',
        'upper' => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
        'digits' => '0123456789',
        'symbols' => '!@#$%^&*+-=_~`|/?()[]{}<>,.;:\'\"'
    ];
    $pool = '';
    foreach ($sets as $k => $on) if ($on) $pool .= $pools[$k];
    if ($pool === '') throw new Exception('No charset');
    $out = '';
    for ($i = 0; $i < $length; $i++) {
        $out .= $pool[random_int(0, strlen($pool)-1)];
    }
    return $out;
}
Go (crypto/rand)
package main

import (
  "crypto/rand"
  "math/big"
)

func RandomPassword(length int, pool string) (string, error) {
  out := make([]byte, length)
  for i := 0; i < length; i++ {
    nBig, err := rand.Int(rand.Reader, big.NewInt(int64(len(pool))))
    if err != nil { return "", err }
    out[i] = pool[nBig.Int64()]
  }
  return string(out), nil
}
Java (SecureRandom)
import java.security.SecureRandom;

public class Pw {
  static final String POOL = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*+-=_~`|/?()[]{}<>,.;:'\"";
  static final SecureRandom SR = new SecureRandom();
  static String randomPassword(int length) {
    StringBuilder sb = new StringBuilder(length);
    for (int i = 0; i < length; i++) {
      int idx = SR.nextInt(POOL.length());
      sb.append(POOL.charAt(idx));
    }
    return sb.toString();
  }
}
C# (.NET RandomNumberGenerator)
using System;
using System.Security.Cryptography;

public static class Pw {
  public static string RandomPassword(int length, string pool) {
    // GetInt32 draws an unbiased value in [0, pool.Length)
    var chars = new char[length];
    for (int i = 0; i < length; i++) {
      chars[i] = pool[RandomNumberGenerator.GetInt32(pool.Length)];
    }
    return new string(chars);
  }
}
Rust (rand + getrandom)
use rand::rngs::OsRng;
use rand::Rng;

fn random_password(length: usize, pool: &str) -> String {
    // gen_range is uniform, so there is no modulo bias
    let chars: Vec = pool.chars().collect();
    (0..length)
        .map(|_| chars[OsRng.gen_range(0..chars.len())])
        .collect()
}

fn main() {
    let pool = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*+-=_~`|/?()[]{}<>,.;:'\"";
    let pw = random_password(16, pool);
    println!("{}", pw);
}