text: (window.webpackJsonp=window.webpackJsonp||[]).push([[145],{211:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return s})),r.d(t,"metadata",(function(){return i})),r.d(t,"rightToc",(function(){return c})),r.d(t,"default",(function(){return u}));var n=r(3),a=r(7),o=(r(0),r(442)),s={id:"kratos-hashers-argon2-calibrate",title:"kratos hashers argon2 calibrate",description:"kratos hashers argon2 calibrate Computes Optimal Argon2 Parameters."},i={unversionedId:"cli/kratos-hashers-argon2-calibrate",id:"cli/kratos-hashers-argon2-calibrate",isDocsHomePage:!1,title:"kratos hashers argon2 calibrate",description:"kratos hashers argon2 calibrate Computes Optimal Argon2 Parameters.",source:"@site/docs/cli/kratos-hashers-argon2-calibrate.md",slug:"/cli/kratos-hashers-argon2-calibrate",permalink:"/kratos/docs/next/cli/kratos-hashers-argon2-calibrate",editUrl:"https://github.com/ory/kratos/edit/master/docs/docs/cli/kratos-hashers-argon2-calibrate.md",version:"current",lastUpdatedBy:"aeneasr",lastUpdatedAt:1610376221,sidebar:"docs",previous:{title:"kratos hashers argon2",permalink:"/kratos/docs/next/cli/kratos-hashers-argon2"},next:{title:"kratos identities",permalink:"/kratos/docs/next/cli/kratos-identities"}},c=[{value:"kratos hashers argon2 calibrate",id:"kratos-hashers-argon2-calibrate",children:[{value:"Synopsis",id:"synopsis",children:[]},{value:"Options",id:"options",children:[]},{value:"SEE ALSO",id:"see-also",children:[]}]}],l={rightToc:c};function u(e){var t=e.components,r=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(n.a)({},l,r,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h2",{id:"kratos-hashers-argon2-calibrate"},"kratos hashers argon2 calibrate"),Object(o.b)("p",null,"Computes Optimal Argon2 Parameters."),Object(o.b)("h3",{id:"synopsis"},"Synopsis"),Object(o.b)("p",null,"This command helps you calibrate the configuration parameters for Argon2.\nPassword hashing is a trade-off between security, resource consumption, and user\nexperience. Resource consumption should not be too high and the login should not\ntake too long."),Object(o.b)("p",null,"We recommend that the login process takes between half a second and one second\nfor password hashing, giving a good balance between security and user\nexperience."),Object(o.b)("p",null,"Please note that the values depend on the machine you run the hashing on. If you\nhave RAM constraints please choose lower memory targets to avoid out of memory\npanics."),Object(o.b)("pre",null,Object(o.b)("code",Object(n.a)({parentName:"pre"},{}),"kratos hashers argon2 calibrate [<desired-duration>] [flags]\n")),Object(o.b)("h3",{id:"options"},"Options"),Object(o.b)("pre",null,Object(o.b)("code",Object(n.a)({parentName:"pre"},{}),"      --adjust-memory-by byte_size   Amount by which the memory is adjusted in every step while probing. (default 1.00GB)\n  -h, --help                         help for calibrate\n      --key-length uint32            Length of the key in bytes. (default 32)\n      --max-memory byte_size         Maximum memory allowed (default no limit). (default 0.00B)\n      --parallelism uint8            Number of threads to use. (default 72)\n  -r, --probe-runs int               Runs per probe, median of all runs is taken as the result. (default 2)\n  -q, --quiet                        Quiet output.\n      --salt-length uint32           Length of the salt in bytes. (default 16)\n  -i, --start-iterations uint32      Number of iterations to start probing at. (default 1)\n  -m, --start-memory byte_size       Amount of memory to start probing at. (default 4.00GB)\n")),Object(o.b)("h3",{id:"see-also"},"SEE ALSO"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",Object(n.a)({parentName:"li"},{href:"kratos-hashers-argon2"}),"kratos hashers argon2")," -")))}u.isMDXComponent=!0},442:function(e,t,r){"use strict";r.d(t,"a",(function(){return p})),r.d(t,"b",(function(){return d}));var n=r(0),a=r.n(n);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?s(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function c(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=a.a.createContext({}),u=function(e){var t=a.a.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=u(e.components);return a.a.createElement(l.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},h=a.a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,l=c(e,["components","mdxType","originalType","parentName"]),p=u(r),h=n,d=p["".concat(s,".").concat(h)]||p[h]||b[h]||o;return r?a.a.createElement(d,i(i({ref:t},l),{},{components:r})):a.a.createElement(d,i({ref:t},l))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,s=new Array(o);s[0]=h;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i.mdxType="string"==typeof e?e:n,s[1]=i;for(var l=2;l<o;l++)s[l]=r[l];return a.a.createElement.apply(null,s)}return a.a.createElement.apply(null,r)}h.displayName="MDXCreateElement"}}]);