Instrument de generare și validare de parole

Instrument profesional de generare și validare de parole care creează parole puternice și fraze de parolă memorabile, cu suport pentru generare în loturi, garanție de unicitate, evaluarea rezistenței și validarea politicilor. Include sursă aleatoare sigură din punct de vedere criptografic, seturi de caractere configurabile, filtrarea caracterelor similare, statistici de deduplicare a loturilor și funcționalitate de copiere cu un singur clic. Conține exemple de cod multilingve, bază de cunoștințe despre parole, cele mai bune practici de securitate și instrumente de testare a politicilor. Toate operațiunile sunt efectuate local în browser, asigurând confidențialitate și securitate.

Generator de parole

Selectați grupuri de simboluri
Sfat: Excludeți caractere selectând grupuri sau făcând clic direct pe caractere individuale.
Rezultat

Tester de politică de parole

Rezultate
  • Lungime
  • Litere mici
  • Litere mari
  • Cifre
  • Caractere speciale
  • Secvențial
  • Repetări
  • Listă de blocare
Toate verificările sunt efectuate local în browserul dvs.

Generator de expresii de acces (passphrase)

Cuvintele sunt alese uniform aleatoriu și criptografic sigur (Web Crypto) dintr-o listă de 1271 de cuvinte fără ambiguități; 6 cuvinte oferă aproximativ 62 biți de entropie — utilizați 8 cuvinte pentru rezistență mai mare.

Fișă de referință pentru hashing-ul parolelor

Argon2id
  • Folosiți Argon2id cu parametri rezonabili care necesită multă memorie
  • Timp ≥ 2 treceri, memorie ≥ 64MB (ajustați conform mediului)
  • Stocați un salt unic per utilizator; opțional utilizați un pepper la nivelul aplicației
PBKDF2
  • Alegeți SHA-256 sau SHA-512 cu iterații ≥ 210k (ajustați după necesități)
  • Folosiți un salt unic pentru fiecare hash; suportați upgrade-uri de parametri
  • Migrați la parametri cu costuri mai mari la următoarea autentificare a utilizatorului
BCrypt
  • Setați costul între 10–14, în funcție de capacitățile serverului
  • Evitați problemele de truncare; hashuiți parola integrală
  • Implementați limitarea ratei și monitorizare pe punctele de autentificare
Referință: NIST SP 800-63B, OWASP ASVS. Parametrii trebuie să se alinieze cu capacitățile hardware și SLO.

Evaluator de rezistență a parolei

Rezistența este aproximată de entropie: entropia = log2(mărimea setului de caractere) × lungime. Un set de caractere mai mare și o lungime mai mare îmbunătățesc rezistența la ghicire.

  • Slabă: < 50 biți — Potrivită numai pentru scenarii unice sau cu valoare scăzută
  • Acceptabilă: 50–80 biți — Acceptabilă pentru scenarii cu risc scăzut
  • Fortă: 80–110 biți — Țintă implicită recomandată
  • Excelentă: > 110 biți — Recomandată pentru conturi de administrator sau conturi critice

Notă: Modelele de atac din lumea reală pot varia; evitați reutilizarea parolelor și activați autentificarea cu doi factori (MFA).

Cum se utilizează

  • Selectați lungimea și setul de caractere (Mici/Mari/Cifre/Simboluri); activați opțional "Evită caractere similare" și "Necesită fiecare tip"
  • Pentru control mai fin: excludeți caractere sau grupuri de caractere specifice, sau alegeți subseturi de simboluri
  • Alegeți câte parole doriți să generați, apoi faceți clic pe Generare; rezultatele în serie sunt dedublicate automat și pot fi copiate toate odată
  • Pentrocad parolele existente, utilizați Testorul de politici; pentru fraze de parolă memorabile, utilizați Generatorul de fraze de parolă

Funcționalități

  • Sursă aleatoare sigură din punct de vedere criptografic (Web Crypto)
  • Seturi de caractere și grupuri de simboluri configurabile
  • Filtrare de caractere similare și excluderi personalizate
  • Generare în lot de 1-100 de parole, întotdeauna unice
  • Măsurători de rezistență și entropie
  • Testor de politici și Generator de fraze de parolă
  • Exemple de cod multilingve
  • Copiere cu un singur clic (unic sau toate)

Exemple de generare de parole

Puternică
Lungime 24, include litere mari, litere mici, cifre și simboluri
Memorabilă
Lungime 16, include litere mari, litere mici și cifre; evită caracterele similare

Bază de cunoștințe despre parole

1) Rezistența parolei și entropia
  • Entropie ≈ log2(dimensiunea setului de caractere) × lungime; lungimea contribuie de obicei mai mult
  • Ținte recomandate: Conturi generale ≥ 80 biți; Conturi cu privilegii înalte/financiare ≥ 110 biți
  • Set de caractere mai mare + lungime mai mare → rezistență mai mare la ghicire
2) Lungime versus complexitate
  • Adăugarea oarbă de simboluri este mai puțin eficientă decât creșterea lungimii
  • Evitați modele predictibile (de ex., mereu "Prima literă majusculă + cifră la final!")
  • Prioritizați o lungime suficientă, apoi creșteți moderat diversitatea caracterelor
3) Greșeli comune și anti-modele
  • Secvențe de tastatură (de ex., qwerty), blocuri repetate, zile de naștere/ani sunt ușor de vizat de reguli
  • Folosirea "parolă rădăcină + sufix site" creează reutilizarea variantelor, concentrează riscul și face parolele mai ușor de ghicit
  • Nu reutilizați niciodată aceeași parolă pe mai multe site-uri
4) Recomandări pentru gestionarea parolelor
  • Utilizați un manager de parole; asigurați parole unice per site; activați MFA pentru conturi critice
  • Evitați transmiterea parolelor în text simplu pe canale publice; utilizați fraze de parolă "pronunțabile" atunci când este necesar
  • Schimbați imediat și faceți parole unice dacă se detectează scurgeri sau reutilizare
5) Orientări pentru fraze de parolă
  • Combinații de 4–6 cuvinte aleatorii sunt de obicei puternice și memorabile
  • Amestcați separatori, scrieți literele inițiale cu majusculă și introduceți numere pentru a îmbunătăți rezistența și lizibilitatea
  • Evitați concatenarea directă a expresiilor comune, versurilor de cântece sau citatelor celebre

Cele mai bune practici de securitate pentru parole

Cele mai bune practici
  • Utilizați o lungime suficientă: 16+ caractere pentru conturile generale, 24+ pentru cele critice
  • Pentru memorabilitate, prioritizați frazele-parolă; folosiți un manager de parole pentru a stoca parole aleatorii de înaltă rezistență
  • Activați autentificarea multi-factor (MFA) ori de câte ori este posibil
  • Nu reutilizați parole pe site-uri diferite — fiecare cont trebuie să aibă o parolă unică
Entropie și rezistență

Entropia măsoară imprevizibilitatea în funcție de lungimea și dimensiunea setului de caractere — cu cât sunt mai mulți biți de entropie, cu atât parola este, de obicei, mai rezistentă.

  • Prioritizați creșterea lungimii pentru a obține cel mai mare câștig de rezistență
  • Utilizați mai multe seturi de caractere dacă este fezabil
  • Excluderea prea multor caractere reduce grupul de caractere și slăbește rezistența
Politici și rotație
  • Preferați cerințele de lungime și listele negre ale parolelor comune / divulgate în detrimentul regulilor complexe de compunere
  • Evitați rotațiile obligatorii frecvente; schimbați parola doar când este detectată o breșă sau un risc
  • Folosiți liste de parole compromise pentru a bloca parolele utilizate frecvent sau cele divulgate
Fraze-parolă
  • Utilizați 4–6 cuvinte aleatorii unite prin separatori, ex: lac-MORCOV-planeta_7
  • Evitați citatele celebre, versurile de cântece sau alte expresii comune; aleatorietatea contează mai mult decât „ingeniozitatea”
  • Pentru conturile critice, folosiți un manager de parole pentru a stoca parole aleatorii cu adevărat de înaltă entropie
Sfaturi setări generare
  • "Solicitați fiecare set selectat" asigură că apare cel puțin un caracter din fiecare categorie aleasă
  • "Evitați caracterele similare" îmbunătățește lizibilitatea, dar reduce ușor dimensiunea grupului de caractere
  • Simbolurile pot fi restricționate la un subset acceptat de sistemul țintă
Stocare pe server
  • Nu stocați parole în text clar; utilizați hashing puternic (Argon2id/PBKDF2/Bcrypt) cu salt
  • Configurați parametrii (memorie/timp/cost) în mod corespunzător; luați în considerare utilizarea pepper atunci când este necesar
  • Limitați rata încercărilor de autentificare și monitorizați eșecurile; aplicați CAPTCHA sau verificarea dispozitivului în timpul atacurilor
Multi-factor și recuperare
  • Preferați TOTP sau cheile hardware; evitați SMS-ul ori de câte ori este posibil
  • Securizați fluxurile de recuperare cu multi-factor sau verificare pe e-mail și impuneți perioade de pauză
  • Furnizați coduri de recuperare de rezervă și încurajați utilizatorii să le stocheze în siguranță
Protecție la atacuri de forță brută
  • Implementați întârzieri progresive sau blocări cu scor de risc IP/dispozitiv
  • Aplicați WAF și limitarea ratei pentru API-uri și formularele de autentificare
  • Monitorizați pentru credential stuffing și încurajați utilizatorii să adopte parole unice
Stocare și manipulare locală
  • Utilizați un manager de parole de încredere pentru stocare și completare automată
  • Nu partajați niciodată parole în text simplu prin chat sau e-mail; folosiți instrumente de gestionare a secretelor pentru echipe
  • Dacă notați parole offline, asigurați securitatea fizică
Exonerare de răspundere: Acest instrument generează parole local în browserul dvs. folosind Web Crypto; nu sunt trimise date către niciun server.

Cum să generați parole prin limbaje de programare

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);
}