[{"data":1,"prerenderedAt":282},["ShallowReactive",2],{"term-b\u002Fbcrypt":3,"related-b\u002Fbcrypt":265},{"id":4,"title":5,"acronym":6,"body":7,"category":246,"description":247,"difficulty":248,"extension":249,"letter":250,"meta":251,"navigation":75,"path":252,"related":253,"seo":259,"sitemap":260,"stem":263,"subcategory":6,"__hash__":264},"terms\u002Fterms\u002Fb\u002Fbcrypt.md","Bcrypt",null,{"type":8,"value":9,"toc":240},"minimark",[10,15,19,23,26,30,229,233,236],[11,12,14],"h2",{"id":13},"eli5-the-vibe-check","ELI5 — The Vibe Check",[16,17,18],"p",{},"Bcrypt is the gold-standard password hasher that's intentionally slow. Slow sounds bad, but it's a feature — it takes a hacker way longer to crack your passwords because each guess is expensive to compute. It also auto-salts for you, so you get two security wins in one.",[11,20,22],{"id":21},"real-talk","Real Talk",[16,24,25],{},"Bcrypt is a password hashing function designed by Niels Provos and David Mazières. It incorporates a work factor (cost parameter) that controls how computationally expensive the hash is, making brute-force attacks impractical. It automatically generates and embeds a salt.",[11,27,29],{"id":28},"show-me-the-code","Show Me The Code",[31,32,37],"pre",{"className":33,"code":34,"language":35,"meta":36,"style":36},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import bcrypt from 'bcrypt';\n\n\u002F\u002F Hash password (cost factor 12)\nconst hash = await bcrypt.hash(plaintextPassword, 12);\n\n\u002F\u002F Verify on login\nconst valid = await bcrypt.compare(plaintextPassword, storedHash);\nif (!valid) return res.status(401).json({ error: 'Invalid credentials' });\n","javascript","",[38,39,40,70,77,84,125,130,136,164],"code",{"__ignoreMap":36},[41,42,45,49,53,56,60,64,67],"span",{"class":43,"line":44},"line",1,[41,46,48],{"class":47},"s7zQu","import",[41,50,52],{"class":51},"sTEyZ"," bcrypt ",[41,54,55],{"class":47},"from",[41,57,59],{"class":58},"sMK4o"," '",[41,61,63],{"class":62},"sfazB","bcrypt",[41,65,66],{"class":58},"'",[41,68,69],{"class":58},";\n",[41,71,73],{"class":43,"line":72},2,[41,74,76],{"emptyLinePlaceholder":75},true,"\n",[41,78,80],{"class":43,"line":79},3,[41,81,83],{"class":82},"sHwdD","\u002F\u002F Hash password (cost factor 12)\n",[41,85,87,91,94,97,100,103,106,110,113,116,120,123],{"class":43,"line":86},4,[41,88,90],{"class":89},"spNyl","const",[41,92,93],{"class":51}," hash ",[41,95,96],{"class":58},"=",[41,98,99],{"class":47}," await",[41,101,102],{"class":51}," bcrypt",[41,104,105],{"class":58},".",[41,107,109],{"class":108},"s2Zo4","hash",[41,111,112],{"class":51},"(plaintextPassword",[41,114,115],{"class":58},",",[41,117,119],{"class":118},"sbssI"," 12",[41,121,122],{"class":51},")",[41,124,69],{"class":58},[41,126,128],{"class":43,"line":127},5,[41,129,76],{"emptyLinePlaceholder":75},[41,131,133],{"class":43,"line":132},6,[41,134,135],{"class":82},"\u002F\u002F Verify on login\n",[41,137,139,141,144,146,148,150,152,155,157,159,162],{"class":43,"line":138},7,[41,140,90],{"class":89},[41,142,143],{"class":51}," valid ",[41,145,96],{"class":58},[41,147,99],{"class":47},[41,149,102],{"class":51},[41,151,105],{"class":58},[41,153,154],{"class":108},"compare",[41,156,112],{"class":51},[41,158,115],{"class":58},[41,160,161],{"class":51}," storedHash)",[41,163,69],{"class":58},[41,165,167,170,173,176,179,182,185,187,190,193,196,198,200,203,205,208,212,215,217,220,222,225,227],{"class":43,"line":166},8,[41,168,169],{"class":47},"if",[41,171,172],{"class":51}," (",[41,174,175],{"class":58},"!",[41,177,178],{"class":51},"valid) ",[41,180,181],{"class":47},"return",[41,183,184],{"class":51}," res",[41,186,105],{"class":58},[41,188,189],{"class":108},"status",[41,191,192],{"class":51},"(",[41,194,195],{"class":118},"401",[41,197,122],{"class":51},[41,199,105],{"class":58},[41,201,202],{"class":108},"json",[41,204,192],{"class":51},[41,206,207],{"class":58},"{",[41,209,211],{"class":210},"swJcz"," error",[41,213,214],{"class":58},":",[41,216,59],{"class":58},[41,218,219],{"class":62},"Invalid credentials",[41,221,66],{"class":58},[41,223,224],{"class":58}," }",[41,226,122],{"class":51},[41,228,69],{"class":58},[11,230,232],{"id":231},"when-youll-hear-this","When You'll Hear This",[16,234,235],{},"\"Use bcrypt for password hashing, not MD5.\" \u002F \"Increase the bcrypt rounds to 12 on modern hardware.\"",[237,238,239],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":36,"searchDepth":72,"depth":72,"links":241},[242,243,244,245],{"id":13,"depth":72,"text":14},{"id":21,"depth":72,"text":22},{"id":28,"depth":72,"text":29},{"id":231,"depth":72,"text":232},"security","Bcrypt is the gold-standard password hasher that's intentionally slow.","intermediate","md","b",{},"\u002Fterms\u002Fb\u002Fbcrypt",[254,255,256,257,258],"Hashing","Salt","MD5","SHA","Password Manager",{"title":5,"description":247},{"changefreq":261,"priority":262},"weekly",0.7,"terms\u002Fb\u002Fbcrypt","6IwSBawkyk-ObcVyhkqIzlGl6cfaa04UQxmYtoBx4c0",[266,270,273,276,279],{"title":254,"path":267,"acronym":6,"category":246,"difficulty":268,"description":269},"\u002Fterms\u002Fh\u002Fhashing","beginner","Hashing is a one-way blender for data. You throw a password in, it spits out a weird string of letters and numbers, and there's no way to reverse it.",{"title":256,"path":271,"acronym":256,"category":246,"difficulty":268,"description":272},"\u002Fterms\u002Fm\u002Fmd5","MD5 is the old grandpa hash algorithm — fast, but full of holes.",{"title":258,"path":274,"acronym":6,"category":246,"difficulty":268,"description":275},"\u002Fterms\u002Fp\u002Fpassword-manager","A password manager remembers all your passwords so you don't have to reuse the same one everywhere.",{"title":255,"path":277,"acronym":6,"category":246,"difficulty":248,"description":278},"\u002Fterms\u002Fs\u002Fsalt","A salt is random gibberish you add to a password before hashing it so two people with the same password get completely different hashes.",{"title":257,"path":280,"acronym":257,"category":246,"difficulty":248,"description":281},"\u002Fterms\u002Fs\u002Fsha","SHA (Secure Hash Algorithm) is a family of blenders for data.",1776518259793]