پاس ورڈ جنریٹر اور توثیق کار ٹول

پروفیشنل پاس ورڈ جنریٹر اور توثیق کار ٹول جو مضبوط پاس ورڈز اور یاد رکھنے کے قابل پاس فریز بناتا ہے، جس میں بیچ جنریشن، منفردیت کی ضمانت، طاقت کا اندازہ اور پالیسی کی توثیق شامل ہے۔ خصوصیات میں خفیہ نگاری کے لحاظ سے محفوظ رینڈم سورس، کنفیگریبل کریکٹر سیٹ، ملتے جلتے کریکٹرز کی فلٹرنگ، بیچ سے ڈپلیکیٹس ہٹانے کے اعداد و شمار اور ایک کلک سے کاپی کرنے کا فنکشن شامل ہے۔ اس میں کثیر لسانی کوڈ کی مثالیں، پاس ورڈ کا علمی بنیاد، سیکیورٹی کے بہترین طریقے اور پالیسی جانچ کے ٹولز شامل ہیں۔ تمام کام آپ کے براؤزر میں مقامی سطح پر ہوتے ہیں، جس سے رازداری اور سیکیورٹی یقینی بنتی ہے۔

پاس ورڈ جنریٹر

علامت کے گروپ منتخب کریں
نصیحت: گروپس منتخب کرکے یا براہ راست انفرادی حروف پر کلک کرکے حروف کو خارج کریں۔
نتیجہ

پاس ورڈ پالیسی ٹیسٹر

نتائج
  • لمبائی
  • چھوٹے حروف
  • بڑے حروف
  • اعداد
  • علامات
  • ترتیب وار
  • تکرار
  • بلاک لسٹ
تمام جانچیں آپ کے براؤزر میں مقامی طور پر کی جاتی ہیں۔

پاس فریز جنریٹر

الفاظ 1271 الفاظ کی واضح فہرست سے Web Crypto کا استعمال کر کے خفیہ طور پر محفوظ بے ترتیبی کے ساتھ یکساں طور پر چنے جاتے ہیں؛ 6 الفاظ سے تقریباً 62 بٹس کی اینٹروپی ملتی ہے — زیادہ سٹرتھ کے لیے 8 الفاظ استعمال کریں۔

پاس ورڈ ہیشنگ چیٹ شیٹ

Argon2id
  • معقول میموری-ہارڈ پیرامیٹرز کے ساتھ Argon2id استعمال کریں
  • وقت ≥ 2 پاسز، میموری ≥ 64MB (ماحول کے مطابق ایڈجسٹ کریں)
  • ہر صارف کے لیے منفرد نمک (salt) محفوظ کریں؛ اختیاری طور پر ایپلی کیشن پرت پر مرچ (pepper) استعمال کریں
PBKDF2
  • SHA-256 یا SHA-512 کو ≥ 210k تکراروں کے ساتھ منتخب کریں (ضرورت کے مطابق ایڈجسٹ کریں)
  • ہر ہیش کے لیے منفرد نمک (salt) استعمال کریں؛ پیرامیٹر اپ گریڈ کی حمایت کریں
  • صارف کی اگلی لاگ ان کے دوران اعلیٰ لاگت والے پیرامیٹرز پر منتقل ہوں
BCrypt
  • سرور کی صلاحیتوں کے مطابق لاگت 10–14 کے درمیان سیٹ کریں
  • کٹاو کے مسائل سے پرہیز کریں؛ مکمل پاس ورڈ کو ہیش کریں
  • تصدیق کے اختتامی نکات پر ریٹ محدودی اور نگرانی نافذ کریں
حوالہ: NIST SP 800-63B, OWASP ASVS۔ پیرامیٹرز کو ہارڈ ویئر کی صلاحیتوں اور SLOs کے مطابق ہونا چاہیے۔

پاس ورڈ سٹرتھ ایویلیو ایٹر

سٹرتھ کا تخمینہ اینٹروپی کے ذریعہ لگایا جاتا ہے: اینٹروپی = لاگ2 (کریکٹر پول کا سائز) × لمبائی۔ بڑا کریکٹر پول اور لمبی لمبائی اندازہ لگانے کے خلاف مزاحمت کو بہتر بناتی ہے۔

  • کمزور: < 50 بٹس —— صرف ایک بار استعمال ہونے والے یا کم قیمت والے منظرناموں کے لیے موزوں
  • معقول: 50–80 بٹس —— کم خطرے والے منظرناموں کے لیے قابل قبول
  • مضبوط: 80–110 بٹس —— تجویز کردہ ڈیفالٹ ہدف
  • بہترین: > 110 بٹس —— ایڈمن یا اہم اکاؤنٹس کے لیے تجویز کردہ

نوٹ: حقیقی دنیا کے حملے کے ماڈل مختلف ہو سکتے ہیں؛ پاس ورڈ کو دوبارہ استعمال کرنے سے گریز کریں اور ملٹی فیکٹر توثیق (MFA) کو فعال کریں۔

کیسے استعمال کریں

  • لمبائی اور کریکٹر سیٹ منتخب کریں (چھوٹے/بڑے حروف/اعداد/علامتیں); اختیاری طور پر 'ملتے جلتے سے بچیں' اور 'ہر ایک درکار' کو فعال کریں
  • مزید درست کنٹرول کے لیے: مخصوص حروف یا کریکٹر گروپز کو خارج کریں، یا علامات کے ذیلی سیٹ منتخب کریں
  • تعیین کریں کہ کتنے پاس ورڈ بنانے ہیں، پھر Generate پر کلک کریں؛ بیچ نتائج خود بخود ڈپلیکیٹ ہوتے ہیں اور سب ایک ساتھ کاپی کیے جا سکتے ہیں
  • موجودہ پاس ورڈز کی توثیق کے لیے، پالیسی ٹیسٹر استعمال کریں؛ یاد رکھنے کے قابل پاس فریز کے لیے، پاس فریز جنریٹر استعمال کریں

خصوصیات

  • خفیہ نگاری کے لحاظ سے محفوظ رینڈم سورس (Web Crypto)
  • کنفیگریبل کریکٹر سیٹ اور علامتیں کے گروپ
  • ملتے جلتے حروف کی فلٹرنگ اور حسب ضرورت اخراج
  • 1-100 پاس ورڈز کی بیچ جنریشن، ہمیشہ منفرد
  • طاقت اور اینٹروپی کے میٹرکس
  • پالیسی ٹیسٹر اور پاس فریز جنریٹر
  • کثیر لسانی کوڈ کی مثالیں
  • ایک کلک سے کاپی (ایک یا سب)

پاس ورڈ جنریشن کی مثالیں

مضبوط
لمبائی 24، اس میں بڑے، چھوٹے حروف، اعداد اور علامات شامل ہیں
یاد رکھنے کے قابل
لمبائی 16، اس میں بڑے، چھوٹے حروف اور اعداد شامل ہیں؛ مشابہ حروف سے پرہیز کرتا ہے

پاس ورڈ کا علمی بنیاد

1) پاس ورڈ کی طاقت اور اینٹروپی
  • اینٹروپی ≈ log2(کریکٹر سیٹ کا سائز) × لمبائی؛ لمبائی عام طور پر زیادہ حصہ ڈالتی ہے
  • تجویز کردہ ہدف: عام اکاؤنٹس ≥ 80 بٹس؛ اعلی مراعات والے/مالیاتی اکاؤنٹس ≥ 110 بٹس
  • بڑا کریکٹر سیٹ + لمبی لمبائی → اندازہ لگانے کے خلاف زیادہ مزاحمت
2) لمبائی بمقابلہ پیچیدگی
  • علامات کو اندھا دھند شامل کرنا لمبائی بڑھانے سے کم موثر ہے
  • قابل پیش بینی نمونوں سے بچیں (مثال کے طور پر، ہمیشہ 'پہلا حرف بڑا + آخر میں نمبر!')
  • کافی لمبائی کو ترجیح دیں، پھر معتدل حد تک کریکٹر تنوع بڑھائیں
3) عام غلطیاں اور اینٹی پیٹرن
  • کی بورڈ کی ترتیبیں (مثال کے طور پر، qwerty)، بار بار آنے والے بلاک، سالگرہ/سالز کو قوانین کے ذریعے آسانی سے نشانہ بنایا جاتا ہے
  • 'روٹ پاس ورڈ + سائٹ کا لگاؤ' استعمال کرنے سے تغیرات کا دوبارہ استعمال ہوتا ہے، خطرہ مرتکز ہوتا ہے اور پاس ورڈز زیادہ آسانی سے اندازہ لگائے جاتے ہیں
  • ایک ہی پاس ورڈ کو ایک سے زیادہ ویب سائٹس پر کبھی نہ استعمال کریں
4) پاس ورڈ مینجمنٹ کی تجاویز
  • پاس ورڈ مینیجر استعمال کریں؛ ہر سائٹ کے لیے منفرد پاس ورڈ یقینی بنائیں؛ اہم اکاؤنٹس کے لیے MFA فعال کریں
  • عوامی چینلز پر پاس ورڈز کو سادہ متن میں منتقل کرنے سے بچیں؛ ضرورت کے مطابق 'تلفظ کے قابل' پاس فریز استعمال کریں
  • اگر لیک ہونے یا دوبارہ استعمال کا پتہ چلے تو فوراً پاس ورڈز تبدیل کریں اور انہیں منفرد بنائیں
5) پاس فریز کے رہنما اصول
  • 4–6 بے ترتیب الفاظ کا مجموعہ عام طور پر مضبوط اور یاد رکھنے کے قابل ہوتا ہے
  • جداسازی کے نشانات ملائیں، پہلے حروف کو بڑے لکھیں، اور طاقت اور پڑھنے کی قابلیت بڑھانے کے لیے نمبر شامل کریں
  • عام جملوں، گانو کی دھنوں، یا مشہور اقتباسات کو براہ راست جوڑنے سے گریز کریں

پاس ورڈ سیکیورٹی کے بہترین طریقے

بہترین طریقے
  • کافی لمبائی استعمال کریں: عام اکاؤنٹس کے لیے 16+ حروف، اہم اکاؤنٹس کے لیے 24+ حروف
  • یاد رکھنے میں آسانی کے لیے، پاس فریز کو ترجیح دیں؛ Random، اعلیٰ طاقت والے پاس ورڈز کو ذخیرہ کرنے کے لیے پاس ورڈ مینیجر استعمال کریں
  • جہاں بھی ممکن ہو ملٹی فیکٹر تصدیق (MFA) کو فعال کریں
  • کبھی بھی سائٹوں پر پاس ورڈز دوبارہ استعمال نہ کریں—ہر اکاؤنٹ کا منفرد پاس ورڈ ہونا چاہیے
انٹروپی اور طاقت

انٹروپی لمبائی اور کریکٹر سیٹ کے سائز کی بنیاد پر غیر متوقع پن کی پیمائش کرتی ہے—انٹروپی بٹس جتنی زیادہ ہوں گے، پاس ورڈ عام طور پر اتنا ہی مضبوط ہوگا

  • زیادہ سے زیادہ طاقت حاصل کرنے کے لیے لمبائی بڑھانے کو ترجیح دیں
  • جہاں ممکن ہو ایک سے زیادہ کریکٹر سیٹ استعمال کریں
  • بہت سارے کریکٹرز کو خارج کرنے سے کریکٹر پول کم ہوجاتا ہے اور طاقت کمزور ہوجاتی ہے
پالیسیاں اور گردش
  • پیچیدہ ساخت کے قواعد کے بجائے لمبائی کی ضروریات اور عام/لیک ہوئے پاس ورڈز کی سیاہ فہرست کو ترجیح دیں
  • بار بار لازمی گردش سے گریز کریں؛ صرف اس وقت تبدیل کریں جب خلاف ورزی یا خطرے کا پتہ چلے
  • عام طور پر استعمال ہونے والے یا لیک ہوئے پاس ورڈز کو روکنے کے لیے سمجھوتہ شدہ پاس ورڈز کی فہرست استعمال کریں
پاس فریز
  • 4–6 بے ترتیب الفاظ استعمال کریں جو جداسازی کے نشانات سے جڑے ہوں، مثلاً lake-CARROT-planet_7
  • مشہور اقتباسات، گانو کی دھنوں، یا دیگر عام جملوں سے گریز کریں؛ 'چالاکی' سے زیادہ بے ترتی پن اہم ہے
  • اہم اکاؤنٹس کے لیے، واقعی اعلیٰ انٹروپی والے بے ترتیب پاس ورڈز کو ذخیرہ کرنے کے لیے پاس ورڈ مینیجر استعمال کریں
پیداوار کی ترتیبات کے مشورے
  • "ہر منتخب سیٹ کی ضرورت" اس بات کو یقینی بناتا ہے کہ منتخب کردہ ہر زمرے کا کم از کم ایک کریکٹر ظاہر ہو
  • "Similar سے گریز" پڑھنے کی قابلیت کو بہتر بناتا ہے لیکن کریکٹر پول کے سائز کو تھوڑا کم کرتا ہے
  • علامتیں ہدف سسٹم کے تعاون یافتہ ذیلی سیٹ تک محدود رکھی جاسکتی ہیں
سرور سائڈ اسٹوریج
  • کبھی بھی پاس ورڈز کو سادہ متن میں ذخیرہ نہ کریں؛ نمک (salt) کے ساتھ مضبوط ہیشنگ (Argon2id/PBKDF2/Bcrypt) استعمال کریں
  • پیرامیٹرز (memory/time/cost) کو مناسب طریقے سے ترتیب دیں؛ ضرورت پڑنے پر پیپر (pepper) استعمال کرنے پر غور کریں
  • لاگ ان کی کوششوں کی شرح کو محدود کریں اور ناکامیوں کی نگرانی کریں؛ حملوں کے دوران CAPTCHAs یا ڈیوائس کی تصدیق کا اطلاق کریں
ملٹی فیکٹر اور بازیابی
  • TOTP یا ہارڈ ویئر کلیدوں کو ترجیح دیں؛ جہاں بھی ممکن ہو SMS سے گریز کریں
  • ملٹی فیکٹر یا ای میل تصدیق کے ساتھ بازیابی کے عمل کو محفوظ بنائیں اور ٹھنڈا ہونے کی مدت کو نافذ کریں
  • بیک اپ بازیابی کے کوڈ فراہم کریں اور صارفین کو انہیں محفوظ طریقے سے ذخیرہ کرنے کی ترغیب دیں
بر Force سے بچاؤ
  • IP/ڈیوائس کے خطرے کے اسکور کے ساتھ ترقی پذیر تاخیر یا تالا لاگو کریں
  • APIs اور لاگ ان فارمز پر WAFs اور شرح کی حد کا اطلاق کریں
  • کریڈنشل اسٹفنگ کی نگرانی کریں اور صارفین کو منفرد پاس ورڈز اپنانے کی ترغیب دیں
مقامی اسٹوریج اور ہینڈلنگ
  • ذخیرہ اور خودکار بھرنے کے لیے معتبر پاس ورڈ مینیجر استعمال کریں
  • چیٹ یا ای میل کے ذریعے صادق (پلین ٹیکسٹ) میں پاس ورڈ کبھی شیئر نہ کریں؛ ٹیموں کے لیے خفیہ مینجمنٹ ٹولز استعمال کریں
  • اگر پاس ورڈ آف لائن لکھ رہے ہیں تو جسمانی سیکیورٹی کو یقینی بنائیں
ڈس کلیمر: یہ ٹول آپ کے براؤزر میں 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');
  // 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);
}