Jelszógenerátor és -ellenőrző eszköz
Professzionális jelszógeneráló és -ellenőrző eszköz, amely erős jelszavakat és könnyen megjegyezhető jelszókifejezéseket hoz létre, kötegelt generálást, egyediséggaranciát, erősségértékelést és szabályzatellenőrzést támogat. Funkciói közé tartozik a kriptográfiailag biztonságos véletlenszerű forrás, konfigurálható karaktersorozatok, hasonló karakterek kiszűrése, kötegelt duplikációstatisztikák és egykattintásos másolási funkció. Többnyelvű kódpéldákat, jelszótudásbázist, biztonsági bevált gyakorlatokat és szabályzattesztelő eszközöket tartalmaz. Minden művelet a böngészőben helyben fut, biztosítva a adatvédelmet és biztonságot.
Jelszógenerátor
-
#
Jelszóházirend-tesztelő
- Hossz
- Kisbetű
- Nagybetű
- Számjegyek
- Szimbólumok
- Szekvenciális
- Ismétlődések
- Tiltólista
Jelszókifejezés-generátor
Jelszóhashelés Csalólap
- Használjon Argon2id-t ésszerű memóriaigényes paraméterekkel
- Idő ≥ 2 menet, memória ≥ 64MB (hangolja a környezetnek megfelelően)
- Tároljon egyedi sót minden felhasználó számára; opcionálisan használjon paprikát az alkalmazás szintjén
- Válassza a SHA-256 vagy SHA-512 algoritmust ≥ 210k iterációval (szükség szerint hangolja)
- Használjon egyedi sót minden hash-hez; támogassa a paraméterfrissítéseket
- Vegyen át magasabb költségparamétereket a felhasználó következő bejelentkezése során
- Állítsa a költséget 10–14 között, a szerver képességeitől függően
- Kerülje a csonkolási problémákat; hashelje a teljes jelszót
- Implementálás sebességkorlátot és megfigyelést a hitelesítési végpontokon
Jelszóerősség-értékelő
Az erősséget az entrópia alapján közelítjük meg: entrópia = log2(karakterhalmaz mérete) × hossz. A nagyobb karakterhalmaz és hossz jobb ellenállást biztosít a feltöréssel szemben.
- Gyenge: < 50 bit –– Csak egyszeri vagy alacsony értékű forgatókönyvekhez alkalmas
- Közepes: 50–80 bit –– Elfogadható alacsony kockázatú forgatókönyvekhez
- Erős: 80–110 bit –– Ajánlott alapértelmezett cél
- Kiváló: > 110 bit –– Ajánlott adminisztrátori vagy kritikus fiókokhoz
Megjegyzés: A valós támadási modellek változhatnak; kerülj a jelszavak újbóli használatát és engedélyezd a többtényezős hitelesítést (MFA).
Használat
- Válassza ki a hosszúságot és a karaktersorozatot (kisbetűk/nagybetűk/számok/szimbólumok); szükség esetén engedélyezze a hasonló karakterek elkerülését és az egyes karakterek szükségességét
- Pontosabb vezérléshez: zárjon ki bizonyos karaktereket vagy karaktercsoportokat, vagy válasszon szimbólumrészhalmazokat
- Válaszd ki, hány jelszót szeretnél generálni, majd kattints a Generálás gombra; a kötegelt eredmények automatikusan ismétlődés-mentesítve lesznek, és egyszerre másolhatók
- Meglévő jelszavak ellenőrzéséhez használja a Szabályzattesztelőt; könnyen megjegyezhető jelszókifejezésekhez használja a Jelszókifejezés-generátort
Funkciók
- Kriptográfiailag biztonságos véletlenszerű forrás (Web Crypto)
- Konfigurálható karaktersorozatok és szimbólumcsoportok
- Hasonló karakterek kiszűrése és egyedi kizárások
- 1-100 jelszó kötegelt generálása, mindig egyedi
- Erősség és entrópia metrikák
- Szabályzattesztelő és jelszókifejezés-generátor
- Többnyelvű kódpéldák
- Egykattintásos másolás (egyetlen vagy összes)
Jelszótudásbázis
- Entrópia ≈ log2(karaktersorozat mérete) × hosszúság; a hosszúság általában nagyobb hozzájárulást tesz
- Ajánlott célok: Általános fiókok ≥ 80 bit; Magas jogosultságú/pénzügyi fiókok ≥ 110 bit
- Nagyobb karaktersorozat + hosszabb hosszúság → nagyobb ellenállás a feltöréssel szemben
- A szimbólumok vakon hozzáadása kevésbé hatékony, mint a hosszúság növelése
- Kerülje a kiszámítható mintákat (pl. mindig „Nagybetűs első betű + záró szám!”)
- Előnyös a megfelelő hosszúság, majd mérsékelten növelni a karakterdiverzitást
- Billentyűzet-sorozatok (pl. qwerty), ismétlődő blokkok, születésnapok/évek könnyen célzottak a szabályok által
- A „gyökérjelszó + oldal utótag” használata változatok újrahasználatát hozza létre, koncentrálva a kockázatot és könnyebbé téve a jelszavak feltörését
- Soha ne használja újra ugyanazt a jelszót több webhelyen
- Használjon jelszókezelőt; biztosítson egyedi jelszavakat minden oldalhoz; engedélyezze az MFA-t a kritikus fiókokhoz
- Kerülje a jelszavak egyszerű szövegben történő továbbítását nyilvános csatornákon; szükség esetén használjon „kimondható” jelszókifejezéseket
- Azonnal változtassa meg és tegye egyedivé a jelszavakat, ha szivárgást vagy újrahasználatot észlel
- A 4–6 véletlenszerű szó kombinációja általában erős és könnyen megjegyezhető
- Keverje az elválasztójeleket, nagybetűvel kezdett szavakat és számokat, hogy növeld az erősséget és az olvashatóságot
- Kerüld a közismert kifejezések, dalszövegek vagy híres idézetek közvetlen összekapcsolását
Jelszóbiztonsági bevált gyakorlatok
- Használj megfelelő hosszúságot: általános fiókokhoz 16+ karakter, kritikus fiókokhoz 24+ karakter
- Emlékezhetőség esetén részesítsd előnyben a jelmondatokat; használj jelszókezelőt a véletlenszerű, nagy erejű jelszavak tárolásához
- Lehetőség szerint engedélyezd a többtényezős hitelesítést (MFA)
- Sose használd újra a jelszavaidat különböző oldalakon – minden fióknak egyedi jelszóra van szüksége
Az entrópia a kiszámíthatatlanságot méri a hossz és a karakterkészlet mérete alapján – minél magasabb az entrópia bitek száma, általában annál erősebb a jelszó.
- Növeld a hosszúságot az elsődleges célként a maximális erősség-növelés érdekében
- Használj több karakterkészletet, ha megvalósítható
- Túl sok karakter kizárása csökkenti a karakterkészlet méretét és gyengíti az erősséget
- Előnyben részesítsd a hosszúsági követelményeket és a közismert/kiszivárgott jelszavakat tiltó listákat az összetett összetételi szabályokkal szemben
- Kerüld a gyakori, kötelező jelszóváltoztatásokat; csak akkor változtasd, ha sérülést vagy kockázatot észlelsz
- Használd a feltört jelszavak listáit a gyakran használt vagy kiszivárgott jelszavak blokkolására
- Használj 4–6 véletlenszerű szót elválasztójelekkel összekapcsolva, pl.: tó. répa. bolygó_7
- Kerüld a híres idézeteket, dalszövegeket vagy más közismert kifejezéseket; a véletlenszerűség fontosabb, mint az „okosság”
- Kritikus fiókok esetén használj jelszókezelőt a valóban magas entrópiájú véletlenszerű jelszavak tárolásához
- "Minden kiválasztott készletet kötelezően" biztosítja, hogy minden választott kategóriából legalább egy karakter megjelenjen
- "Hasonló karakterek kerülése" javítja az olvashatóságot, de kissé csökkenti a karakterkészlet méretét
- A szimbólumok korlátozhatók a célrendszer által támogatott részhalmazra
- Sose tárolj jelszavakat egyszerű szövegben; hasznlj erős hashinget (Argon2id/PBKDF2/Bcrypt) sóval
- Konfiguráld megfelelően a paramétereket (memória/idő/költség); szükség esetén fontolóra vehető a pepper használata
- Korlátozd a bejelentkezési kísérletek számát és monitorozd a sikertelen próbálkozásokat; alkalmazd a CAPTCHA-t vagy eszköz-ellenőrzést támadások idején
- Előnyben részesítsd a TOTP-t vagy hardverkulcsokat; a lehetőség szerint kerüld az SMS-t
- Biztonságos helyreállítási folyamatok többtényezős vagy e-mailes ellenőrzéssel, és kényszeríts várakozási időszakokat
- Biztosíts tartalék helyreállítási kódokat, és ösztönözd a felhasználókat azok biztonságos tárolására
- Valósíts meg fokozatos késleltetéseket vagy zárolásokat IP/eszköz kockázati pontszámmal
- Alkalmazj WAF-okat és sebességkorlátozást az API-okra és bejelentkezési űrlapokra
- Monitorozd a hitelesítő adatok feltöltését, és ösztönözd a felhasználókat az egyedi jelszavak használatára
- Használj megbízható jelszókezelőt a tároláshoz és automatikus kitöltéshez
- Soha ne oszd meg a jelszavakat nyílt szöveges csevegésben vagy e-mailben; csapatokhoz titkoságkezelő eszközöket használj
- Ha offline írod le a jelszavakat, gondoskodj fizikai biztonságukról
Jelszavak Generálása Programozási Nyelvekkel
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;
}
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))
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;
}
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
}
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();
}
}
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);
}
}
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);
}