ToolDeck

পাসওয়ার্ড জেনারেটর

কাস্টমাইজযোগ্য দৈর্ঘ্য এবং ক্যারেক্টার সেট দিয়ে শক্তিশালী র‍্যান্ডম পাসওয়ার্ড তৈরি করুন

দৈর্ঘ্য20
গণনা5

পাসওয়ার্ড জেনারেটর কী?

একটি পাসওয়ার্ড জেনারেটর র‍্যান্ডম ক্যারেক্টারের স্ট্রিং তৈরি করে যা ব্যবহারকারীর অ্যাকাউন্ট, API কী, ডেটাবেস ক্রেডেনশিয়াল এবং এনক্রিপশন সিক্রেট হিসেবে ব্যবহৃত হয়। নিজে বেছে নেওয়া পাসওয়ার্ডের বিপরীতে, জেনারেট করা পাসওয়ার্ডগুলো সম্ভাব্য সব ক্যারেক্টার কম্বিনেশন থেকে তৈরি হয়, যা তাদের ডিকশনারি আক্রমণ এবং প্যাটার্ন-ভিত্তিক অনুমানের বিরুদ্ধে প্রতিরোধী করে তোলে। এই টুলটি আপনার ব্রাউজারের অন্তর্নির্মিত ক্রিপ্টোগ্রাফিক র‍্যান্ডম নম্বর জেনারেটর ব্যবহার করে অনলাইনে শক্তিশালী র‍্যান্ডম পাসওয়ার্ড তৈরি করে।

পাসওয়ার্ডের শক্তি দুটি বিষয়ের উপর নির্ভর করে: দৈর্ঘ্য এবং ক্যারেক্টারের বৈচিত্র্য। বড় হাতের অক্ষর, ছোট হাতের অক্ষর, ডিজিট এবং প্রতীক ব্যবহার করে একটি ২০-ক্যারেক্টারের পাসওয়ার্ডে প্রায় ১৩১ বিট এনট্রপি থাকে। সেই মাত্রায়, প্রতি সেকেন্ডে এক ট্রিলিয়ন অনুমান পরীক্ষা করা একটি ব্রুট-ফোর্স আক্রমণের প্রতিটি সমন্বয় চেষ্টা করতে মহাবিশ্বের বয়সের চেয়ে বেশি সময় লাগবে। গণিতটি সহজ: এনট্রপি = দৈর্ঘ্য × log2(ক্যারেক্টার সেটের আকার)।

NIST SP 800-63B-এর মতো মানদণ্ড কমপক্ষে ৮ ক্যারেক্টারের পাসওয়ার্ড সুপারিশ করে এবং যাচাইকারীর দ্বারা কোনো উপরের সীমা না রাখার পরামর্শ দেয়। এটি জোরপূর্বক কম্পোজিশন নিয়ম, যেমন ঠিক একটি প্রতীক প্রয়োজন, এর বিরুদ্ধে নিরুৎসাহিত করে এবং পরিবর্তে দীর্ঘ পাসফ্রেজকে প্রাধান্য দেয়। মেশিন-টু-মেশিন ক্রেডেনশিয়াল এবং সার্ভিস অ্যাকাউন্টের জন্য, একটি সম্পূর্ণ ক্যারেক্টার সেট থেকে নেওয়া ২০ বা তার বেশি র‍্যান্ডম ক্যারেক্টার অধিকাংশ নিরাপত্তা ফ্রেমওয়ার্ক এবং কমপ্লায়েন্স পদ্ধতিতে গৃহীত মান।

পাসওয়ার্ড জেনারেটর কেন ব্যবহার করবেন?

আমরা মানুষেরা আসলে ভালো র‍্যান্ডম নম্বর তৈরি করতে পারি না। আমরা পাসওয়ার্ড পুনরায় ব্যবহার করি, ডিকশনারির শব্দ বেছে নিই, অনুমানযোগ্য প্যাটার্নে অক্ষর বদলাই (a-এর জায়গায় @, e-এর জায়গায় 3) এবং ছোট পাসওয়ার্ড দিয়েই কাজ চালাই। একটি পাসওয়ার্ড জেনারেটর এই স্বাভাবিক মানবিক দুর্বলতা দূর করে।

🔐
গোপনীয়তা-প্রথম তৈরি
পাসওয়ার্ডগুলো সম্পূর্ণরূপে আপনার ব্রাউজারে Web Crypto API ব্যবহার করে তৈরি হয়। কোনো ক্যারেক্টার আপনার ডিভাইস ছেড়ে যায় না, কিছুই লগ করা হয় না এবং তৈরির সময় কোনো নেটওয়ার্ক অনুরোধ করা হয় না।
তাৎক্ষণিক ব্যাচ আউটপুট
একটি ক্লিকে একসাথে ২০টি পর্যন্ত পাসওয়ার্ড তৈরি করুন। প্রভিশনিং স্ক্রিপ্ট বা ক্রেডেনশিয়াল ভল্টের জন্য পৃথক পাসওয়ার্ড বা সবগুলো একসাথে কপি করুন।
🛡️
কোনো অ্যাকাউন্ট প্রয়োজন নেই
কোনো সাইন-আপ নেই, কোনো ইমেইল নেই, আপনার তৈরি করা পাসওয়ার্ড ট্র্যাক করার জন্য কোনো কুকি নেই। পেজ খুলুন, আপনার বিকল্পগুলো কনফিগার করুন এবং তৈরি করুন।
🎛️
সম্পূর্ণ ক্যারেক্টার সেট নিয়ন্ত্রণ
বড় হাতের অক্ষর, ছোট হাতের অক্ষর, ডিজিট এবং প্রতীক স্বাধীনভাবে টগল করুন। যেকোনো সিস্টেম বা নীতির প্রয়োজনীয়তা পূরণ করতে ৪ থেকে ১২৮ ক্যারেক্টার পর্যন্ত দৈর্ঘ্য নির্ধারণ করুন।

পাসওয়ার্ড জেনারেটরের ব্যবহারের ক্ষেত্র

ফ্রন্টেন্ড ডেভেলপমেন্ট
ফর্ম ভ্যালিডেশন, ইনপুট দৈর্ঘ্য পরীক্ষা এবং অথেন্টিকেশন ফ্লো ডেভেলপমেন্টের জন্য টেস্ট পাসওয়ার্ড তৈরি করুন। যাচাই করুন যে আপনার লগইন ফর্মগুলো ১২৮-ক্যারেক্টারের পাসওয়ার্ড এবং বিশেষ ক্যারেক্টার সঠিকভাবে পরিচালনা করে।
ব্যাকএন্ড ও DevOps
অবকাঠামো সেটআপের সময় ডেটাবেস ক্রেডেনশিয়াল, API টোকেন এবং সার্ভিস অ্যাকাউন্ট পাসওয়ার্ড তৈরি করুন। একটি সেশনে একাধিক সার্ভিস প্রভিশন করতে ব্যাচ জেনারেশন ব্যবহার করুন।
সিকিউরিটি ইঞ্জিনিয়ারিং
এনক্রিপশন কী, HMAC সাইনিং এবং JWT সিক্রেট রোটেশনের জন্য উচ্চ-এনট্রপি সিক্রেট তৈরি করুন। ২৫৬ বিটের বেশি এনট্রপি প্রয়োজন এমন সিক্রেটের জন্য দৈর্ঘ্য ৬৪+ ক্যারেক্টারে নির্ধারণ করুন।
QA ও পেনিট্রেশন টেস্টিং
নির্দিষ্ট ক্যারেক্টার সেট অন্তর্ভুক্ত বা বাদ দিয়ে স্ট্রিং তৈরি করে পাসওয়ার্ড নীতি প্রয়োগ পরীক্ষা করুন। যাচাই করুন যে সিস্টেমগুলো সঠিকভাবে সর্বনিম্ন দৈর্ঘ্য বা জটিলতার নিচের পাসওয়ার্ড প্রত্যাখ্যান করে।
ডেটা ইঞ্জিনিয়ারিং
টেস্ট এনভায়রনমেন্ট, স্টেজিং ডেটাবেস এবং CI/CD পাইপলাইন সিক্রেটের জন্য র‍্যান্ডম ক্রেডেনশিয়াল তৈরি করুন। প্রতিটি এনভায়রনমেন্টের জন্য নতুন পাসওয়ার্ড তৈরি করে টেস্ট ডেটায় প্রোডাকশন পাসওয়ার্ড পুনরায় ব্যবহার এড়িয়ে চলুন।
ব্যক্তিগত অ্যাকাউন্ট নিরাপত্তা
প্রতিটি অনলাইন অ্যাকাউন্টের জন্য অনন্য পাসওয়ার্ড তৈরি করুন। যে ক্রেডেনশিয়ালগুলো মুখস্ত করার প্রয়োজন নেই সেগুলো সংরক্ষণ করতে এই জেনারেটরকে একটি পাসওয়ার্ড ম্যানেজারের সাথে যুক্ত করুন।

পাসওয়ার্ড এনট্রপি রেফারেন্স

এনট্রপি পরিমাপ করে একটি পাসওয়ার্ড কতটা অনুমানযোগ্য নয়। এটি log2(ক্যারেক্টার_সেটের_আকার ^ দৈর্ঘ্য) হিসেবে গণনা করা হয়। উচ্চ এনট্রপি মানে একজন আক্রমণকারীর অনুসন্ধানের জন্য আরও বেশি সম্ভাব্য সমন্বয়। NIST এবং OWASP উচ্চ-নিরাপত্তা অ্যাপ্লিকেশনের জন্য কমপক্ষে ৮০ বিট এনট্রপি সুপারিশ করে।

দৈর্ঘ্যক্যারেক্টার সেটএনট্রপিব্রুট-ফোর্স সময়
8lower + digits~41 bitsMinutes to hours
12lower + upper + digits~71 bitsCenturies (offline)
16all character sets~105 bitsBeyond brute-force
20all character sets~131 bitsBeyond brute-force
32all character sets~210 bitsBeyond brute-force
64all character sets~419 bitsBeyond brute-force

ক্র্যাক সময়গুলো প্রতি সেকেন্ডে ১ ট্রিলিয়ন অনুমান ধরে নেয় (আধুনিক GPU সহ অফলাইন আক্রমণ)। রেট লিমিটিং সহ অনলাইন আক্রমণ অনেক গুণ ধীর।

পাসওয়ার্ড তৈরিতে CSPRNG বনাম Math.random()

র‍্যান্ডমনেসের উৎস পাসওয়ার্ডের দৈর্ঘ্যের মতোই গুরুত্বপূর্ণ। একটি অনুমানযোগ্য র‍্যান্ডম নম্বর জেনারেটর দিয়ে তৈরি পাসওয়ার্ড এমন একজন আক্রমণকারী দ্বারা পুনর্নির্মাণ করা যেতে পারে যিনি অ্যালগরিদম এবং সিড স্টেট জানেন। এই টুলটি crypto.getRandomValues() ব্যবহার করে, যা প্রতিটি আধুনিক ব্রাউজারে অন্তর্নির্মিত একটি ক্রিপ্টোগ্রাফিকভাবে সুরক্ষিত সিউডোর্যান্ডম নম্বর জেনারেটর (CSPRNG)।

crypto.getRandomValues()
অপারেটিং সিস্টেম এনট্রপি উৎস ব্যবহার করে (হার্ডওয়্যার RNG, ইন্টারাপ্ট টাইমিং ইত্যাদি)। আউটপুট অনুমানযোগ্য নয় এমনকি যদি কোনো আক্রমণকারী সমস্ত পূর্ববর্তী আউটপুট জানেন। নিরাপত্তা-সংবেদনশীল অপারেশনের জন্য W3C Web Crypto স্পেসিফিকেশন দ্বারা প্রয়োজনীয়।
Math.random()
সীমিত এনট্রপি পুল থেকে সিড করা একটি নির্ধারক অ্যালগরিদম ব্যবহার করে। সিড স্টেট জানা থাকলে আউটপুট পূর্বাভাস দেওয়া যায়। ECMAScript স্পেসিফিকেশন স্পষ্টভাবে বলে যে Math.random() ক্রিপ্টোগ্রাফিকভাবে সুরক্ষিত র‍্যান্ডম নম্বর সরবরাহ করে না। পাসওয়ার্ড তৈরিতে কখনো এটি ব্যবহার করবেন না।

কোড উদাহরণ

বিভিন্ন ভাষায় প্রোগ্রামেটিকভাবে পাসওয়ার্ড তৈরি করুন। নিচের প্রতিটি উদাহরণ ক্রিপ্টোগ্রাফিকভাবে সুরক্ষিত র‍্যান্ডম উৎস ব্যবহার করে, Math.random() বা সমতুল্য দুর্বল PRNG নয়।

JavaScript (Web Crypto API)
// Generate a random password in the browser or Node.js 19+
function generatePassword(length = 20) {
  const charset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*'
  const values = new Uint32Array(length)
  crypto.getRandomValues(values)
  return Array.from(values, v => charset[v % charset.length]).join('')
}

console.log(generatePassword())    // → "kR7!mZp$Xw2&nLq9@Yf3"
console.log(generatePassword(32))  // → "Hd4%tNx!Qw8#mKp2Rv6&Zj0*Ls3Yb7@"
Python
import secrets
import string

def generate_password(length: int = 20) -> str:
    """Generate a cryptographically secure random password."""
    alphabet = string.ascii_letters + string.digits + string.punctuation
    return ''.join(secrets.choice(alphabet) for _ in range(length))

# Single password
print(generate_password())      # → "kR7!mZp$Xw2&nLq9@Yf3"

# Batch of 5 passwords
for _ in range(5):
    print(generate_password(24))

# Ensure at least one char from each category
def generate_strong(length: int = 20) -> str:
    required = [
        secrets.choice(string.ascii_uppercase),
        secrets.choice(string.ascii_lowercase),
        secrets.choice(string.digits),
        secrets.choice(string.punctuation),
    ]
    remaining = length - len(required)
    alphabet = string.ascii_letters + string.digits + string.punctuation
    all_chars = required + [secrets.choice(alphabet) for _ in range(remaining)]
    secrets.SystemRandom().shuffle(all_chars)
    return ''.join(all_chars)
CLI (OpenSSL / /dev/urandom)
# OpenSSL — generate 32 random bytes, base64-encode
openssl rand -base64 32
# → "x7Kp2mNqR4wZ8vLs1Yb0Hd6tFj3Xc9Ga5eUi+Wo="

# /dev/urandom with tr — alphanumeric + symbols, 20 chars
tr -dc 'A-Za-z0-9!@#$%^&*' < /dev/urandom | head -c 20; echo
# → "kR7!mZp$Xw2&nLq9@Yf3"

# pwgen (install: apt install pwgen / brew install pwgen)
pwgen -sy 20 5
# Generates 5 passwords, 20 chars each, with symbols
Go
package main

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

func generatePassword(length int) (string, error) {
    charset := "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()"
    result := make([]byte, length)
    for i := range result {
        idx, err := rand.Int(rand.Reader, big.NewInt(int64(len(charset))))
        if err != nil {
            return "", err
        }
        result[i] = charset[idx.Int64()]
    }
    return string(result), nil
}

func main() {
    pwd, _ := generatePassword(20)
    fmt.Println(pwd) // → "kR7!mZp$Xw2&nLq9@Yf3"
}

প্রায়শই জিজ্ঞাসিত প্রশ্ন

একটি পাসওয়ার্ড কতটা দীর্ঘ হওয়া উচিত?
ব্যবহারকারীর অ্যাকাউন্টের জন্য, একটি মিশ্র ক্যারেক্টার সেট থেকে ১৬টি ক্যারেক্টার ১০০ বিটের বেশি এনট্রপি প্রদান করে, যা সমস্ত বর্তমান থ্রেট মডেলের জন্য যথেষ্ট। মেশিন সিক্রেটের জন্য (API কী, এনক্রিপশন কী), ৩২ বা তার বেশি ক্যারেক্টার ব্যবহার করুন। NIST SP 800-63B সর্বনিম্ন ৮ ক্যারেক্টার নির্ধারণ করে কিন্তু সুপারিশ করে যে সিস্টেমগুলো ট্রাংকেশন ছাড়াই আরও দীর্ঘ পাসওয়ার্ড অনুমতি দেয়।
এই পাসওয়ার্ড জেনারেটর ব্যবহার করা কি নিরাপদ?
হ্যাঁ। পাসওয়ার্ডগুলো আপনার ব্রাউজারে Web Crypto API (crypto.getRandomValues) ব্যবহার করে তৈরি হয়। কোনো ডেটা কোনো সার্ভারে পাঠানো হয় না। আপনি আপনার ব্রাউজারের নেটওয়ার্ক ট্যাব খুলে এবং Generate ক্লিক করার সময় কোনো অনুরোধ করা হয় না তা পর্যবেক্ষণ করে এটি যাচাই করতে পারেন। সোর্স কোড ক্লায়েন্ট-সাইড JavaScript, আপনার ব্রাউজারের ডেভেলপার টুলে দৃশ্যমান।
পাসওয়ার্ড এনট্রপি কী?
এনট্রপি হল বিটে প্রকাশিত র‍্যান্ডমনেসের একটি পরিমাপ। N বিট এনট্রপিসহ একটি পাসওয়ার্ডের 2^N সম্ভাব্য মান রয়েছে। উদাহরণস্বরূপ, ৯৫টি প্রিন্টযোগ্য ASCII ক্যারেক্টার থেকে নেওয়া একটি ২০-ক্যারেক্টারের পাসওয়ার্ডের log2(95^20) = ১৩১.১ বিট এনট্রপি রয়েছে। প্রতিটি অতিরিক্ত বিট একজন আক্রমণকারীর প্রয়োজনীয় অনুমানের সংখ্যা দ্বিগুণ করে।
আমার পাসওয়ার্ডে প্রতীক অন্তর্ভুক্ত করা উচিত কি?
প্রতীক অন্তর্ভুক্ত করা ক্যারেক্টার সেটকে ৬২ (অক্ষর + ডিজিট) থেকে ৯৫ (প্রিন্টযোগ্য ASCII) তে বাড়ায়, যা প্রতি ক্যারেক্টারে প্রায় ৬.১ বিট এনট্রপি যোগ করে। কিছু সিস্টেম নির্দিষ্ট প্রতীকগুলো সীমাবদ্ধ করে। যদি কোনো সিস্টেম নির্দিষ্ট প্রতীক প্রত্যাখ্যান করে, প্রতীক বিকল্পটি বন্ধ করুন এবং একটি দীর্ঘ পাসওয়ার্ড দিয়ে ক্ষতিপূরণ করুন। প্রতীকসহ একটি ১৬-ক্যারেক্টারের পাসওয়ার্ডের চেয়ে একটি ২৪-ক্যারেক্টারের আলফানিউমেরিক পাসওয়ার্ডে বেশি এনট্রপি রয়েছে।
পাসওয়ার্ড তৈরিতে Math.random() কেন ব্যবহার করবেন না?
Math.random() ক্রিপ্টোগ্রাফিকভাবে সুরক্ষিত নয়। বেশিরভাগ JavaScript ইঞ্জিন এটি xorshift128+ বা অনুরূপ দ্রুত PRNG দিয়ে বাস্তবায়ন করে যা নিরাপত্তার জন্য নয়, সিমুলেশন এবং গেমের জন্য ডিজাইন করা হয়েছে। কয়েকটি আউটপুট পর্যবেক্ষণ করা একজন আক্রমণকারী অভ্যন্তরীণ স্টেট পুনরুদ্ধার করতে এবং সমস্ত ভবিষ্যৎ আউটপুট পূর্বাভাস দিতে পারেন। Web Crypto API অপারেটিং সিস্টেম এনট্রপি উৎস ব্যবহার করে যা অনুমানযোগ্য নয়।
আমি কি API কী এবং টোকেনের জন্য তৈরি করা পাসওয়ার্ড ব্যবহার করতে পারি?
হ্যাঁ, কিন্তু আপনার টার্গেট সিস্টেমের ফরম্যাট প্রয়োজনীয়তা বিবেচনা করুন। কিছু API স্বেচ্ছাচারী ক্যারেক্টারের পরিবর্তে base64-এনকোডেড কী বা হেক্স স্ট্রিং প্রত্যাশা করে। raw সিক্রেট তৈরির জন্য, ৩২+ ক্যারেক্টারে সম্পূর্ণ ক্যারেক্টার সেট ব্যবহার করুন। base64 কীর জন্য, base64-কে পাসওয়ার্ড ক্যারেক্টার সেট হিসেবে বিবেচনা না করে পৃথকভাবে র‍্যান্ডম বাইট তৈরি করুন এবং এনকোড করুন।
কত ঘন ঘন পাসওয়ার্ড পরিবর্তন করা উচিত?
NIST SP 800-63B (২০১৭, ২০২৪ সালে আপডেট) ব্যবহারকারীর পাসওয়ার্ডের জন্য জোরপূর্বক পর্যায়ক্রমিক রোটেশনের বিরুদ্ধে সুপারিশ করে কারণ এটি দুর্বল পাসওয়ার্ড বেছে নেওয়ার দিকে নিয়ে যায়। শুধুমাত্র আপোসের প্রমাণ থাকলে রোটেট করুন। মেশিন সিক্রেট এবং সার্ভিস অ্যাকাউন্টের জন্য, আপনার প্রতিষ্ঠানের ঝুঁকি মডেলের উপর ভিত্তি করে রোটেট করুন, সাধারণত উচ্চ-সুবিধাপ্রাপ্ত ক্রেডেনশিয়ালের জন্য প্রতি ৯০ দিনে।

সম্পর্কিত টুলস

শব্দ গণনাকারীশব্দ, অক্ষর, বাক্য, অনুচ্ছেদ গণনা করুন এবং পড়ার সময় অনুমান করুনকেস রূপান্তরকারীটেক্সট uppercase, lowercase, title case, camelCase, snake_case এবং আরও কেসের মধ্যে রূপান্তর করুনলোরেম ইপসাম জেনারেটরকনফিগারযোগ্য অনুচ্ছেদ ও শব্দ সহ লোরেম ইপসাম প্লেসহোল্ডার টেক্সট তৈরি করুনলাইন সর্টারলাইনগুলি বর্ণানুক্রমিক, দৈর্ঘ্য অনুযায়ী, বিপরীত বা র্যান্ডমলি সাজানসদৃশ লাইন অপসারণকারীপাঠ্য থেকে সদৃশ লাইনগুলি সরান, শুধুমাত্র অনন্য লাইনগুলি রাখুনটেক্সট ডিফদুটি টেক্সট পাশাপাশি তুলনা করুন এবং লাইন-বাই-লাইন পার্থক্য হাইলাইট করুনRegex পরীক্ষকস্ট্রিং-এ রেগুলার এক্সপ্রেশন পরীক্ষা করুন এবং সমস্ত ম্যাচ হাইলাইট দেখুনMarkdown প্রিভিউরিয়েল টাইমে Markdown টেক্সট HTML হিসেবে রেন্ডার করে প্রিভিউ দেখুনস্লাগ জেনারেটরযেকোনো টেক্সটকে পরিষ্কার URL-বান্ধব স্লাগে রূপান্তর করুন