Εργαλείο γεννήσεως και ελέγχου κωδικών πρόσβασης
Δημιουργία ισχυρών κωδικών και φράσεων κλειδιών, με υποστήριξη για μαζική γεννήσεις, εγγύηση μοναδικότητας, έλεγχο ισχύος και πολιτικών, καθώς και παραδείγματα κώδικα σε πολλές γλώσσες και χρήσιμες γνώσεις.
Γεννήτρια κωδικών πρόσβασης
Πλήθος
Επιλογή ομάδας συμβόλων
×
Υπόδειξη: Μπορείτε να αποκλείσετε επιλέγοντας ομάδες ή κάνοντας κλικ άμεσα στους χαρακτήρες.
Αποτέλεσμα
Εντροπία
Ισχύς:
Δημιουργήθηκαν
Στοιχεία
-
#
Διπλότυπα:
(Ζητήθηκαν ,
Μοναδικά
)
Δεν βρέθηκαν αρκετές μοναδικές συνδυασμοί· μειώστε τον αριθμό ή επεκτείνετε το σύνολο χαρακτήρων.
Εντροπία
Ισχύς:
Δοκιμαστής Πολιτικής Κωδικού
Αποτελέσματα
- Μήκος
- Πεζά γράμματα
- Κεφαλαία γράμματα
- Αριθμοί
- Σύμβολα
- Συνεχόμενες ακολουθίες
- Επαναλήψεις
- Λίστα απαγόρευσης
Όλες οι ελέγχους πραγματοποιούνται τοπικά στον περιηγητή σας.
Γεννήτρια Φράσεων Πρόσβασης
Οι λέξεις επιλέγονται με ασφαλή τυχαιότητα (Web Crypto). Η δείγμα λεξιλογίου είναι περιορισμένο για λόγους μεγέθους.
Πίνακας γρήγορης αναφοράς για κατακερματισμό κωδικών
Argon2id
- Χρησιμοποιήστε Argon2id με λογικές παραμέτρους μνήμης
- Επαναλήψεις ≥ 2, μνήμη ≥ 64MB (ρυθμίστε ανάλογα με το περιβάλλον)
- Αποθηκεύστε μοναδικό salt για κάθε χρήστη; επιλογικά χρησιμοποιήστε pepper στο επίπεδο εφαρμογής
PBKDF2
- Επιλέξτε SHA-256 ή SHA-512, επαναλήψεις ≥ 210k (ρυθμίστε ανάλογα με τις ανάγκες)
- Χρησιμοποιήστε μοναδικό salt για κάθε κατακερματισμό; υποστηρίζεται αναβάθμιση παραμέτρων
- Μεταφέρετε σε υψηλότερες παραμέτρους κόστους κατά την επόμενη σύνδεση του χρήστη
BCrypt
- Κόστος 10–14, ανάλογα με τις δυνατότητες του διακομιστή
- Αποφύγετε προβλήματα κοπής· κατακερματίστε τον πλήρη κωδικό πρόσβασης
- Εφαρμόστε περιορισμό ρυθμού και παρακολούθηση στα σημεία πιστοποίησης
Πηγή: NIST SP 800-63B, OWASP ASVS. Οι παράμετροι πρέπει να συμφωνούν με τις δυνατότητες υλικού και τα SLO.
Αξιολόγηση Ισχύος Κωδικού
Η ισχύς εκτιμάται με βάση την εντροπία: entropy = log2(μέγεθος συνόλου χαρακτήρων) × μήκος. Μεγαλύτερο σύνολο χαρακτήρων και μεγαλύτερο μήκος αυξάνουν την αντοχή σε εκτιμήσεις.
- Αδύναμο: < 50 bits — Κατάλληλο μόνο για προσωρινές/χαμηλής αξίας περιπτώσεις
- Μέτριο: 50–80 bits — Αποδεκτό για χαμηλού κινδύνου σενάρια
- Ισχυρό: 80–110 bits — Προτεινόμενος στόχος προεπιλογής
- Εξαιρετικό: > 110 bits — Κατάλληλο για διαχειριστές/κρίσιμους λογαριασμούς
Σημείωση: Πραγματικά μοντέλα επίθεσης μπορεί να διαφέρουν· αποφύγετε την επανάχρηση κωδικών και ενεργοποιήστε την πολυπαράγοντη πιστοποίηση (MFA).
Οδηγίες χρήσης
- Επιλέξτε μήκος και σύνολο χαρακτήρων (Μικροί/Κεφαλαίοι/Αριθμοί/Σύμβολα); ενεργοποιήστε ανάγκη τις επιλογές Αποφυγή ομοίων και Απαίτηση κάθε ένας
- Για λεπτομερέστερο έλεγχο: αποκλείστε συγκεκριμένους χαρακτήρες ή ομάδες, ή επιλέξτε ομάδες συμβόλων
- Κάντε κλικ στο γεννήστε· για πολλαπλά αποτελέσματα, ενεργοποιήστε τη μαζική γεννήση και αντιγράψτε όλα με ένα κλικ
- Για να ελέγξετε έναν υπάρχοντα κωδικό, χρησιμοποιήστε τον «Έλεγχο Πολιτικής»· για εύκολα απομνημονεύσιμες φράσεις, χρησιμοποιήστε τον «Γεννήτη Φράσεων Κλειδιού»
Χαρακτηριστικά
- Ασφαλές τυχαίο πηγαίο (Web Crypto)
- Διαμορφώσιμα σύνολα χαρακτήρων και ομάδες συμβόλων
- Φιλτράρισμα ομοίων χαρακτήρων και προσαρμοσμένη αποκλειστικότητα
- Μαζική γεννήση, εγγύηση μοναδικότητας και στατιστική αφαίρεση διπλότυπων
- Δείκτες ισχύος και εντροπίας
- Έλεγχος πολιτικής και γεννήτης φράσεων κλειδιού
- Παραδείγματα κώδικα σε πολλές γλώσσες (JS、Python、PHP、Go、Java、C#、Rust)
- Αντιγραφή με ένα κλικ (μοναδικό/όλα)
Βάση γνώσεων κωδικών
1) Ισχύς κωδικού και εντροπία
- Εντροπία ≈ log2(μέγεθος συνόλου χαρακτήρων) × μήκος· η συνεισφορά του μήκους είναι συνήθως μεγαλύτερη
- Προτεινόμενος στόχος: Γενικοί λογαριασμοί ≥ 80 bit; Λογαριασμοί υψηλών δικαιωμάτων/χρηματικοί ≥ 110 bit
- Μεγαλύτερο σύνολο χαρακτήρων + μεγαλύτερο μήκος → μεγαλύτερη αντοχή σε εκτίμηση
2) Μήκος vs Πολυπλοκότητα
- Η τυφλή προσθήκη συμβόλων δεν είναι τόσο αποτελεσματική όσο η αύξηση του μήκους
- Αποφύγετε προβλέψιμα πρότυπα (π.χ. πάντα «κεφαλαίο πρώτο γράμμα + αριθμός στο τέλος!»)
- Προτεραιότητα: βεβαιωθείτε ότι το μήκος είναι επαρκές, στη συνέχεια αυξήστε ελαφρώς την ποικιλία των χαρακτήρων
3) Κοινά λάθη και αντι-πρότυπα
- Σειρές πληκτρολογίου (qwerty), επαναλαμβανόμενα τμήματα, γενέθλια/έτη — εύκολα εντοπίζονται από κανόνες
- Το «κύριος κωδικός + επίθετο ιστοσελίδας» είναι παραλλαγή και επανάχρηση, με κεντρικό κίνδυνο και εύκολα προβλέψιμο
- Μην χρησιμοποιείτε τον ίδιο κωδικό σε πολλές ιστοσελίδες
4) Συστάσεις διαχείρισης κωδικών
- Χρησιμοποιήστε διαχειριστή κωδικών; κάθε ιστοσελίδα με μοναδικό κωδικό; ενεργοποιήστε MFA για σημαντικούς λογαριασμούς
- Αποφύγετε την αποστολή κωδικών σε επίπεδο κειμένου σε δημόσια κανάλια; σε αναγκαστικές περιπτώσεις, χρησιμοποιήστε «φιλικούς προφορικούς» κωδικούς
- Αν ανιχνευθεί διαρροή ή επανάχρηση, αλλάξτε αμέσως και βεβαιωθείτε ότι είναι μοναδικός
5) Οδηγός για φράσεις κωδικών (Passphrase)
- Συνδυασμοί 4–6 λέξεων είναι συνήθως ισχυροί και εύκολοι να θυμηθείτε
- Συνδυάστε διαχωριστικά σύμβολα, κεφαλαία γράμματα και αριθμούς για να αυξήσετε την ισχύ και την αναγνωσιμότητα
- Αποφύγετε την άμεση σύνθεση κοινών φράσεων/στίχων/αποφθέγματα
Οδηγίες ασφάλειας κωδικών
Καλές Πρακτικές
- Χρησιμοποιήστε όσο το δυνατόν μεγαλύτερο μήκος: 16+ για γενικούς λογαριασμούς, 24+ για κρίσιμους λογαριασμούς
- Για εύκολη απομνημόνευση, προτιμήστε φράσεις κωδικών· για τυχαίους, ισχυρούς κωδικούς, χρησιμοποιήστε διαχειριστή κωδικών
- Ενεργοποιήστε όσο το δυνατόν περισσότερο την πολυπαράγοντη πιστοποίηση (MFA)
- Μην επαναχρησιμοποιείτε κωδικούς σε διαφορετικούς ιστότοπους· κάθε λογαριασμός πρέπει να έχει μοναδικό κωδικό
Εντροπία και Ισχύς
Η εντροπία μετράει την απρόβλεπτη φύση βάσει του μήκους και του μεγέθους του συνόλου χαρακτήρων· όσο μεγαλύτερο το πλήθος bits εντροπίας, τόσο ισχυρότερος ο κωδικός.
- Αυξήστε το μήκος για μέγιστη βελτίωση
- Χρησιμοποιήστε ποικίλα σύνολα χαρακτήρων όταν είναι δυνατόν
- Η υπερβολική αποκλειστικότητα σε χαρακτήρες μειώνει το σύνολο χαρακτήρων και αποδυναμώνει την ισχύ
Πολιτικές και Εναλλαγή
- Προτιμήστε μήκος και λίστες απαγορευμένων/διαρρεύσαντων κωδικών έναντι περίπλοκων κανόνων σύνθεσης
- Αποφύγετε τη συχνή υποχρεωτική εναλλαγή· αλλάξτε μόνο σε περίπτωση διαρροής ή κινδύνου
- Χρησιμοποιήστε λίστες διαρρεύσαντων κωδικών για να αποκλείσετε γνωστούς/διαρρεύσαντες κωδικούς
Φράσεις Κωδικών
- Χρησιμοποιήστε 4–6 τυχαίες λέξεις συνδεδεμένες με διαχωριστικά, π.χ. lake-CARROT-planet_7
- Αποφύγετε γνωστές φράσεις, στίχους ή αποσπάσματα· η τυχαιότητα είναι σημαντικότερη από την «ευφυΐα»
- Για κρίσιμους λογαριασμούς, προτείνεται να αποθηκεύετε τυχαίους, υψηλής εντροπίας κωδικούς μέσω διαχειριστή κωδικών
Υποδείξεις Για Ρυθμίσεις Δημιουργίας
- Το "Require each selected set" εξασφαλίζει ότι κάθε κατηγορία χαρακτήρων εμφανίζεται τουλάχιστον μία φορά
- Το "Avoid similar" βελτιώνει την ανagnώριση, αλλά μειώνει ελαφρώς το μέγεθος του συνόλου χαρακτήρων
- Οι ειδικοί χαρακτήρες μπορούν να περιοριστούν σε ένα υποσύνολο που υποστηρίζει το σύστημα στόχος
Αποθήκευση Στον Διακομιστή
- Μην αποθηκεύετε ποτέ σε καθαρό κείμενο· χρησιμοποιήστε ισχυρό hash (Argon2id/PBKDF2/BCrypt) με salt
- Ρυθμίστε εύλογα τις παραμέτρους (μνήμη/χρόνος/κόστος) και χρησιμοποιήστε pepper όταν απαιτείται
- Περιορίστε τον ρυθμό και παρακολουθήστε τις αποτυχημένες προσπάθειες· σε επίθεση, προσθέστε CAPTCHA ή επαλήθευση συσκευής
Πολυπαράγοντη Πιστοποίηση και Ανάκτηση
- Προτιμήστε TOTP/κλειδιά υλικού· αποφύγετε όσο το δυνατόν περισσότερο το SMS
- Προστατεύστε τη διαδικασία ανάκτησης: χρησιμοποιήστε πολυπαράγοντα ή επαλήθευση email με περίοδο αναμονής
- Παρέχετε αντίγραφα ανάκτησης και προτρέψτε τους χρήστες να τα φυλάσσουν ασφαλώς
Προστασία Κατά Βίαιων Επιθέσεων
- Χρησιμοποιήστε προοδευτική καθυστέρηση/κλείδωμα και βαθμολογία κινδύνου IP/συσκευής
- Διαμορφώστε WAF/περιορισμό ρυθμού για API και φόρμες σύνδεσης
- Παρακολουθήστε επιθέσεις με επανάχρηση κωδικών και προτρέψτε τους χρήστες να χρησιμοποιούν μοναδικούς κωδικούς
Τοπική Αποθήκευση και Επεξεργασία
- Χρησιμοποιήστε αξιόπιστο διαχειριστή κωδικών για αποθήκευση και αυτόματη συμπλήρωση
- Μην μοιράζεστε κωδικούς σε καθαρή μορφή μέσω chat/email· για ομάδες, χρησιμοποιήστε εργαλεία διαχείρισης μυστικών
- Αν χρειάζεστε εγγραφή χειρός, βεβαιωθείτε ότι είναι φυσικά ασφαλές
Δήλωση: Αυτό το εργαλείο δημιουργεί κωδικούς τοπικά στον περιηγητή με το Web Crypto· δεν στέλνει δεδομένα στον διακομιστή.
Πώς να δημιουργήσετε κωδικούς πρόσβασης μέσω γλωσσών προγραμματισμού
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');
const bytes = new Uint32Array(length);
crypto.getRandomValues(bytes);
let out = '';
for (let i = 0; i < length; i++) out += pool[bytes[i] % 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) {
using var rng = RandomNumberGenerator.Create();
var bytes = new byte[length];
rng.GetBytes(bytes);
var chars = new char[length];
for (int i = 0; i < length; i++) {
chars[i] = pool[bytes[i] % pool.Length];
}
return new string(chars);
}
}
Rust(rand + getrandom)
use rand::rngs::OsRng;
use rand::RngCore;
fn random_password(length: usize, pool: &str) -> String {
let mut bytes = vec![0u8; length];
OsRng.fill_bytes(&mut bytes);
let chars: Vec = pool.chars().collect();
bytes
.iter()
.map(|b| chars[(*b as usize) % chars.len()])
.collect()
}
fn main() {
let pool = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*+-=_~`|/?()[]{}<>,.;:'\"";
let pw = random_password(16, pool);
println!("{}", pw);
}