[{"data":1,"prerenderedAt":336},["ShallowReactive",2],{"navigation_docs":3,"-algorithms-argon2i":200,"-algorithms-argon2i-surround":331},[4,40],{"title":5,"path":6,"stem":7,"children":8,"icon":39},"Guide","\u002Fguide","1.guide\u002F01.index",[9,11,15,19,23,27,31,35],{"title":10,"path":6,"stem":7},"Getting Started",{"title":12,"path":13,"stem":14},"Hashing","\u002Fguide\u002Fhashing","1.guide\u002F02.hashing",{"title":16,"path":17,"stem":18},"HMAC and verify","\u002Fguide\u002Fverify","1.guide\u002F03.verify",{"title":20,"path":21,"stem":22},"Salted KDFs","\u002Fguide\u002Fkdf","1.guide\u002F04.kdf",{"title":24,"path":25,"stem":26},"CLI","\u002Fguide\u002Fcli","1.guide\u002F05.cli",{"title":28,"path":29,"stem":30},"Agents","\u002Fguide\u002Fagents","1.guide\u002F06.agents",{"title":32,"path":33,"stem":34},"Custom algorithms","\u002Fguide\u002Fcustom","1.guide\u002F07.custom",{"title":36,"path":37,"stem":38},"Playground","\u002Fguide\u002Fplayground","1.guide\u002F08.playground","i-lucide-book-open",{"title":41,"path":42,"stem":43,"children":44,"icon":199},"Algorithms","\u002Falgorithms","2.algorithms\u002F00.index",[45,47,51,55,59,63,67,71,75,79,83,87,91,95,99,103,107,111,115,119,123,127,131,135,139,143,147,151,155,159,163,167,171,175,179,183,187,191,195],{"title":46,"path":42,"stem":43},"Every algorithm",{"title":48,"path":49,"stem":50},"SHA-256","\u002Falgorithms\u002Fsha256","2.algorithms\u002F01.sha256",{"title":52,"path":53,"stem":54},"SHA-384","\u002Falgorithms\u002Fsha384","2.algorithms\u002F02.sha384",{"title":56,"path":57,"stem":58},"SHA-512","\u002Falgorithms\u002Fsha512","2.algorithms\u002F03.sha512",{"title":60,"path":61,"stem":62},"SHA-224","\u002Falgorithms\u002Fsha224","2.algorithms\u002F04.sha224",{"title":64,"path":65,"stem":66},"SHA-512\u002F224","\u002Falgorithms\u002Fsha512-224","2.algorithms\u002F05.sha512-224",{"title":68,"path":69,"stem":70},"SHA-512\u002F256","\u002Falgorithms\u002Fsha512-256","2.algorithms\u002F06.sha512-256",{"title":72,"path":73,"stem":74},"SHA-512Half","\u002Falgorithms\u002Fsha512-half","2.algorithms\u002F07.sha512-half",{"title":76,"path":77,"stem":78},"SHA3-256","\u002Falgorithms\u002Fsha3-256","2.algorithms\u002F08.sha3-256",{"title":80,"path":81,"stem":82},"SHA3-512","\u002Falgorithms\u002Fsha3-512","2.algorithms\u002F09.sha3-512",{"title":84,"path":85,"stem":86},"Keccak-256","\u002Falgorithms\u002Fkeccak256","2.algorithms\u002F10.keccak256",{"title":88,"path":89,"stem":90},"BLAKE2b","\u002Falgorithms\u002Fblake2b","2.algorithms\u002F11.blake2b",{"title":92,"path":93,"stem":94},"BLAKE2b-256","\u002Falgorithms\u002Fblake2b-256","2.algorithms\u002F12.blake2b-256",{"title":96,"path":97,"stem":98},"BLAKE2b-224","\u002Falgorithms\u002Fblake2b-224","2.algorithms\u002F13.blake2b-224",{"title":100,"path":101,"stem":102},"BLAKE2s","\u002Falgorithms\u002Fblake2s","2.algorithms\u002F14.blake2s",{"title":104,"path":105,"stem":106},"BLAKE3","\u002Falgorithms\u002Fblake3","2.algorithms\u002F15.blake3",{"title":108,"path":109,"stem":110},"BLAKE-256","\u002Falgorithms\u002Fblake256","2.algorithms\u002F16.blake256",{"title":112,"path":113,"stem":114},"RIPEMD-160","\u002Falgorithms\u002Fripemd160","2.algorithms\u002F17.ripemd160",{"title":116,"path":117,"stem":118},"RIPEMD-320","\u002Falgorithms\u002Fripemd320","2.algorithms\u002F18.ripemd320",{"title":120,"path":121,"stem":122},"HASH160","\u002Falgorithms\u002Fhash160","2.algorithms\u002F19.hash160",{"title":124,"path":125,"stem":126},"HASH256","\u002Falgorithms\u002Fhash256","2.algorithms\u002F20.hash256",{"title":128,"path":129,"stem":130},"MD5","\u002Falgorithms\u002Fmd5","2.algorithms\u002F21.md5",{"title":132,"path":133,"stem":134},"MD4","\u002Falgorithms\u002Fmd4","2.algorithms\u002F22.md4",{"title":136,"path":137,"stem":138},"NTLM","\u002Falgorithms\u002Fntlm","2.algorithms\u002F23.ntlm",{"title":140,"path":141,"stem":142},"SHA-1","\u002Falgorithms\u002Fsha1","2.algorithms\u002F24.sha1",{"title":144,"path":145,"stem":146},"SHA-0","\u002Falgorithms\u002Fsha0","2.algorithms\u002F25.sha0",{"title":148,"path":149,"stem":150},"RIPEMD-128","\u002Falgorithms\u002Fripemd128","2.algorithms\u002F26.ripemd128",{"title":152,"path":153,"stem":154},"RIPEMD-256","\u002Falgorithms\u002Fripemd256","2.algorithms\u002F27.ripemd256",{"title":156,"path":157,"stem":158},"CRC-32","\u002Falgorithms\u002Fcrc32","2.algorithms\u002F28.crc32",{"title":160,"path":161,"stem":162},"CRC-16\u002FXMODEM","\u002Falgorithms\u002Fcrc16-xmodem","2.algorithms\u002F29.crc16-xmodem",{"title":164,"path":165,"stem":166},"xxHash (XXH64)","\u002Falgorithms\u002Fxxhash","2.algorithms\u002F30.xxhash",{"title":168,"path":169,"stem":170},"FNV-1a (64-bit)","\u002Falgorithms\u002Ffnv1a","2.algorithms\u002F31.fnv1a",{"title":172,"path":173,"stem":174},"scrypt","\u002Falgorithms\u002Fscrypt","2.algorithms\u002F32.scrypt",{"title":176,"path":177,"stem":178},"PBKDF2","\u002Falgorithms\u002Fpbkdf2","2.algorithms\u002F33.pbkdf2",{"title":180,"path":181,"stem":182},"HKDF","\u002Falgorithms\u002Fhkdf","2.algorithms\u002F34.hkdf",{"title":184,"path":185,"stem":186},"EVP_BytesToKey","\u002Falgorithms\u002Fevp-bytestokey","2.algorithms\u002F35.evp-bytestokey",{"title":188,"path":189,"stem":190},"Argon2id","\u002Falgorithms\u002Fargon2id","2.algorithms\u002F36.argon2id",{"title":192,"path":193,"stem":194},"Argon2i","\u002Falgorithms\u002Fargon2i","2.algorithms\u002F37.argon2i",{"title":196,"path":197,"stem":198},"Argon2d","\u002Falgorithms\u002Fargon2d","2.algorithms\u002F38.argon2d","i-lucide-library",{"id":201,"title":192,"body":202,"description":324,"extension":325,"links":326,"meta":327,"navigation":328,"path":193,"seo":329,"stem":194,"__hash__":330},"docs\u002F2.algorithms\u002F37.argon2i.md",{"type":203,"value":204,"toc":322},"minimark",[205,209,213,297,305,318],[206,207],"algorithm-facts",{"name":208},"argon2i",[210,211,212],"p",{},"argon2i picks every block it reads from a counter, never from the password. Somebody timing your cache learns nothing. The price? It trades memory for time more willingly, so RFC 9106 says it makes more passes to make up for it. Three passes is about right for most memory sizes, by the RFC's own math.",[214,215,220],"pre",{"className":216,"code":217,"language":218,"meta":219,"style":219},"language-ts shiki shiki-themes hashes hashes hashes","create(\"argon2i\").hash(\"password\", {\n  salt: \"73616c7473616c74\",\n  memory: 1024,\n  iterations: 2,\n  parallelism: 1,\n}).digest;\n\u002F\u002F \"51d1ed13365c7dd42d6cfaefa4c1efe10eb7196a44ed4069a0486d308a93610d\"\n","ts","",[221,222,223,254,266,272,278,284,290],"code",{"__ignoreMap":219},[224,225,228,232,236,240,243,246,248,251],"span",{"class":226,"line":227},"line",1,[224,229,231],{"class":230},"sK71F","create",[224,233,235],{"class":234},"s38Sx","(",[224,237,239],{"class":238},"shU9J","\"argon2i\"",[224,241,242],{"class":234},").",[224,244,245],{"class":230},"hash",[224,247,235],{"class":234},[224,249,250],{"class":238},"\"password\"",[224,252,253],{"class":234},", {\n",[224,255,257,260,263],{"class":226,"line":256},2,[224,258,259],{"class":234},"  salt: ",[224,261,262],{"class":238},"\"73616c7473616c74\"",[224,264,265],{"class":234},",\n",[224,267,269],{"class":226,"line":268},3,[224,270,271],{"class":234},"  memory: 1024,\n",[224,273,275],{"class":226,"line":274},4,[224,276,277],{"class":234},"  iterations: 2,\n",[224,279,281],{"class":226,"line":280},5,[224,282,283],{"class":234},"  parallelism: 1,\n",[224,285,287],{"class":226,"line":286},6,[224,288,289],{"class":234},"}).digest;\n",[224,291,293],{"class":226,"line":292},7,[224,294,296],{"class":295},"scIB-","\u002F\u002F \"51d1ed13365c7dd42d6cfaefa4c1efe10eb7196a44ed4069a0486d308a93610d\"\n",[210,298,299,300,304],{},"Same password, same salt, same cost as the ",[301,302,303],"a",{"href":189},"argon2id"," example. A different digest anyway, because the variant goes into the very first hash. Mix them up and nothing will ever match.",[210,306,307,308,310,311,314,315,317],{},"Options, defaults and the byte function ",[221,309,208],{}," from ",[221,312,313],{},"@agntn\u002Fhashes\u002Fargon2"," work exactly like on the ",[301,316,303],{"href":189}," page. Starting something new? Take argon2id. The RFC does too.",[319,320,321],"style",{},"html pre.shiki code .sK71F, html code.shiki .sK71F{--shiki-light:var(--shiki-token-function);--shiki-default:var(--shiki-token-function);--shiki-dark:var(--shiki-token-function)}html pre.shiki code .s38Sx, html code.shiki .s38Sx{--shiki-light:var(--ui-text-highlighted);--shiki-default:var(--ui-text-highlighted);--shiki-dark:var(--ui-text-highlighted)}html pre.shiki code .shU9J, html code.shiki .shU9J{--shiki-light:var(--shiki-token-string);--shiki-default:var(--shiki-token-string);--shiki-dark:var(--shiki-token-string)}html pre.shiki code .scIB-, html code.shiki .scIB-{--shiki-light:var(--shiki-token-comment);--shiki-default:var(--shiki-token-comment);--shiki-dark:var(--shiki-token-comment)}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":219,"searchDepth":256,"depth":256,"links":323},[],"Argon2 with memory reads that never depend on the password. Side channels get nothing and it needs more passes for it","md",null,{},true,{"title":192,"description":324},"x9iVrgBGpVUdLQYGkENheRVs6mHXGtjcjJYe4YUcMxM",[332,334],{"title":188,"path":189,"stem":190,"description":333,"children":-1},"The Argon2 that RFC 9106 tells you to pick. Memory-hard with a salt it draws and prints when you give none",{"title":196,"path":197,"stem":198,"description":335,"children":-1},"Argon2 with memory reads that follow the data. The fastest to hurt a GPU and the wrong pick when someone shares the machine",1790887232610]