Password Hashing
PASSWORDS, ko, KABHI, BHI, PLAIN, TEXT, mein, STORE, NAHI, karna, CHAHIYE — bcrypt, JAISE, HASHING, ALGORITHMS, USE, kiye, jaate, HAIN, JO, ONE-WAY, HAIN (HASH, se, ORIGINAL, PASSWORD, RECOVER, NAHI, kiya, ja, sakta).
bcrypt, AUTOMATICALLY, EK, RANDOM, "SALT" ADD, karta hai, HAR, PASSWORD, mein, HASH, karne, se, PEHLE — ISSE, SAME, PASSWORD, DO, ALAG, USERS, ke, liye, DIFFERENT, HASHES, PRODUCE, karta hai, aur, "RAINBOW, TABLE" ATTACKS, se, BACHATA, hai.
const bcrypt = require("bcrypt");
// Signup — password hash karके, store:
app.post("/signup", async (req, res) => {
const hashedPassword = await bcrypt.hash(req.body.password, 10); // 10 = salt rounds
await db.createUser({ email: req.body.email, password: hashedPassword });
res.status(201).json({ message: "User created" });
});
// Login — password compare:
app.post("/login", async (req, res) => {
const user = await db.findUser(req.body.email);
const isValid = await bcrypt.compare(req.body.password, user.password);
if (!isValid) return res.status(401).json({ error: "Invalid credentials" });
res.json({ message: "Login success" });
});- bcrypt = one-way, hashing, algorithm — hash, se, original, password, recover, NAHI, ho, sakta
- Automatic salting, "rainbow table" attacks, se, BACHATA, hai
- Passwords, KABHI, BHI, plain, text, mein, store, NAHI, karne, CHAHIYE
bcrypt.compare(), TIMING-SAFE, hai — REGULAR, === COMPARISON, se, ALAG, jo, EARLY, RETURN, kar, sakta hai (TIMING, ATTACK, VULNERABLE). bcrypt.compare(), CONSTANT, TIME, LETA, hai, CHAHE, PASSWORD, KITNA, BHI, WRONG, HO.
const isValid = await bcrypt.compare(plainPassword, hashedPassword);
// NEVER: plainPassword === hashedPassword (comparison ka, hi, matlab, NAHI banaता)Argon2, EK, NEWER, PASSWORD, HASHING, ALGORITHM, hai (2015, Password Hashing Competition, WINNER) — bcrypt, se, ZYAADA, MEMORY-HARD, hai, JISSE, GPU-BASED, BRUTE-FORCE, ATTACKS, aur, DIFFICULT, ho, jaate, HAIN.