[{
    "name":"phkdf first light",
    "args": {
        "username":"Yuri",
        "password":"default remote access code",
        "long-tag":"Please leave the location of America's nuclear wessels after the beep.",
        "domain-tag":"1-800-CALL-SPY",
        "rounds":1998
    },
    "results":{
        "phkdf-pass":"85c2cce906bbce9b507de1ddb415c9703d635d4f14f3e81c1299ceaa00d86541129d9020319d3fb0053c69ce6f0d279f6c4dd28bda70d3c1c0f91e259a8a15e0",
        "phkdf-simple":"3d5628f4834c15a114f0055d2da659ea6564c7fc574bf63c7f413810fda442712631cabfd1a1b8d0a21b70b471d070549ea040d16a00b6112e9c59ca78e27d95"
    }
},{
    "name":"phkdf first light, elaborated",
    "args": {
        "username":"Yuri",
        "password":"default remote access code",
        "credentials":["The Indiana Academy for Science, Mathematics, and Humanities"],
        "long-tag":"Please leave the location of America's nuclear wessels after the beep.",
        "domain-tag":"1-800-CALL-SPY",
        "seed-tags":["United States Army Counterintelligence Tip Line"],
        "role":["prankster"],
        "echo-tag":"Star Trek IV: The Voyage Home https://www.youtube.com/watch?v=MdSJFrhb-HM",
        "rounds":1998
    },
    "results":{
        "phkdf-pass":"61f3c4a90166fc2251b80af8bad4810c0b9dce56c7ddfbac45c3f7b96c12ca67d2d2d4ee9f92483b045b67dba3de5b1c51abaf0be8580f4ed9c061c255912256",
        "phkdf-simple":"a2150b311d2727b8592265150935d910e9717fdab169a03149ff07c49bee8fb2aa4f74513251a4546cd8a35b347a08771b5305105cc6fb393e779669b632b7f5"
    }
},{
    "name":"phkdf unicode test, inset naval story with a reference",
    "args": {
        "username":"Р-360 «Нептун»",
        "password":"Русский военный корабль, иди нахуй",
        "seed-tags":["Державне Київське конструкторське бюро «Луч»"],
        "echo-tag":"Збройні Cили України «ЗСУ»",
        "domain-tag":"Україна",
        "rounds":2022
    },
    "results":[
        {"phkdf-pass":"18d55590dd5f6665aa4bdeaab904f4c1b3a7090a7e1d597d3a8a707b0bf4aacc60c16809b066faa2e9aa08c5757f0a92bbe536249dc3cce50e16f83e9f9b066c",
         "phkdf-simple":"e1b2b5b36693e30451c15699e8ac87d5642ac0f6a648e45f3073860fad014243d095798308c76e0a5a860e1695208869cbc0c2e52eb9590d257fa202f8610361"},
        {"args":{"seguid":{"hex":"0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f40"}},
         "phkdf-pass":"898e874852c46aa168465813e68982d82bdb0fae4ff65ab846a7784c6cf591b97ef79eb647b07896cc099c5c5a3d29acadcf8f62fc0244eb33326c6669816a5d",
         "phkdf-simple":"2b04923bde6d77364c3141603c6f3c87e9e99724d7de408244db3814e3ac22624b89e17454b23921f08dc75b50f81a35ef61ebaf7bf16d8efdb38a949535aa7a"},
        {"args":{"seguid":{"hex":"0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f4041"}},
         "phkdf-pass":"6e21277c164beb8f7d51c3d0766239e668ea4516040a0eb9d526f179c73cee9bbd7a53fabf50166ad01b33111ad20d96dd8736c113fad1f74b18220ab34358ac",
         "phkdf-simple":"f9979f9f5572a0b2906dbd1d09894d40ff916829c4560caaaf57754d1d62ca418f077021c478d92160fef64728bfc86c97548d366e07bd38da256b4b09d8426c"}
    ]
},{
    "name":"phkdf unicode test, lightly extended on top",
    "args": {
        "username":"Лев Николаевич Толстой",
        "password":"Книга моя, как я и ожидал, была задержана русской цензурой, но отчасти вследствие моей репутации как писателя, отчасти потому, что она заинтересовала людей, книга эта распространилась в рукописях и литографиях в России и в переводах за границей и вызвала, с одной стороны, от людей, разделяющих мои мысли, ряд сведений о сочинениях, писанных об этом же предмете, с другой стороны, ряд критик на мысли, высказанные в самой книге.",
        "domain-tag":"Царство Божие внутри вас",
        "long-tag":"В другой брошюре, под заглавием: «Сколько нужно людей, чтобы преобразить злодейство в праведность», Адина Баллу говорит: «Один человек не должен убивать. Если он убил, он преступник, он убийца. Два, десять, сто человек, если они делают это, — они убийцы. Но государство или народ может убивать, сколько он хочет, и это не будет убийство, а хорошее, доброе дело. Только собрать побольше народа, и бойня десятков тысяч людей становится невинным делом. Но сколько именно нужно людей для этого? Вот в чем вопрос. Один не может красть, грабить, но целый народ может. Но сколько именно нужно для этого? Почему 1, 10, 100 человек не должны нарушать закона бога, а очень много могут?»",
        "seed-tags":["Мы будем стараться распространять свои взгляды среди всех людей, к каким бы народам, исповеданиям и слоям общества они ни принадлежали. Для этой цели мы будем устраивать публичные чтения, распространять печатные объявления и брошюры, составлять общества и подавать прошения во всякие правительственные учреждения. Вообще будем стремиться всеми доступными для нас средствами к достижению коренного переворота во взглядах, чувствах и действиях нашего общества относительно греховности насилия по отношению к внешним и внутренним врагам. Принимаясь за это великое дело, мы вполне сознаем, что наша искренность может быть подвергнута жестоким испытаниям. Наша задача может навлечь на нас оскорбления, обиды, страдания и даже смерть. Нас ожидает непонимание, ложное толкование и клевета. Против нас должна подняться буря. Гордость и фарисейство, честолюбие и жестокость, правители и власти, — всё это может соединиться, чтоб уничтожить нас. Таким образом поступали с мессией, которому мы стремимся подражать по мере сил своих. Но нас не пугают эти ужасы. Мы надеемся не на людей, а на всемогущего господа. Если мы отказались от человеческого заступничества, что же может поддержать нас, как не одна вера, побеждающая мир? Мы не будем удивляться тем испытаниям, которым мы подвергнемся, а будем радоваться тому, что удостоимся разделить страдания Христа.","Вильям Ллойд Гаррисон"],
        "rounds":1894
    },
    "results":{
        "phkdf-pass":"14fe2a87d7e8bdaebbbfe8a4a10b20adc9867e4a4ede7609f430e148f774ae8c5f00ab74b9444698bc037b4ef0204af7ebb6dd62076e727e0555af31d2e18d7d",
        "phkdf-simple":"182d3cfa57c4c0f5a672b082f8a1bbd18d25c65c4ef2d701b849f0bd0cf7632a0897dbb5eaf2b0bb1369f36fa6f5748007db1c92c1302f5fbd47bd6394f0840d"
    }
},{
    "name":"xkcd account problems",
    "args":{
        "username":"Cueball",
        "password":{"hex":"7061737300776f7264"},
        "credentials":["input method not included"],
        "domain-tag":"https://xkcd.com/2700/",
        "rounds":2022
    },
    "results":{
        "phkdf-pass":"120721ef9341e37d582ea8616405e28cd944c672cfbc611aa64296c0cd711967c9b48f3333674eb9af9ed705164cb05f9b1dae5e3a3118ca39f71940476bdf7e",
        "phkdf-simple":"09d0c23f626afddaf7c80afaab025487663eb1e0de54a8e96c7e3ba27c1a15f38f23706f46e7a98b9b7f1c4a7d179327c38fc71939da707b5a8bff4a96b732d5"
    }
},{
    "name":"xkcd password strength #1",
    "args":{
        "username":"Anonymous Coward",
        "password":"Tr0ub4dor&3",
        "domain-tag":"https://xkcd.com/936/",
        "rounds":2011
    },
    "results":{
        "phkdf-pass":"07e0ab490c6afbdf5dc7e0c8adbe4c41c9bf612182cb8760cbe182466ca4d869b93e12148fd07845298e2bba69793016c0b19bb64495fbc8ebf6a647aa436680",
        "phkdf-simple":"702fe250b3ce99795fa2c7f0589e49ddaa2d415b79946665d3110c7c093be15db9b097adc2e27968c3a5e431ed22d613fac919640e2e31ed50ed104341f79ac3"
    }
},{
    "name":"xkcd password strength #2",
    "args":{
        "username":"Randall Munroe",
        "password":"correct horse battery staple",
        "tags":[
            "Diceware","https://theworld.com/~reinhold/diceware.html","Arnold Reinhold",
            "https://www.eff.org/dice","Electronic Frontier Foundation"
        ],
        "domain-tag":"xkcd.com/936/",
        "rounds":2011
    },
    "results":[
        {"phkdf-pass":"9e7c2a86e38e68d82f29eb6c5f5e347962ed247373e029edf5c6c4ca1cc3102eb04fcdff1f8ee4f002845b2e0f82bfab0a0a8499a9d7b984094057be9df70396",
         "phkdf-simple":"94dc6265c671726b20377acc5e3745df3678d61d9cbe16ae9a648b64d86cc0f2addc06f3575f4e9f964ac698a24227bd066f5ca5a23cd2205aab9deec0979776"},
        {"args":{"rounds":255},
         "phkdf-pass":"549d63a1236da84b2c1ba408ebb5b5151ea77e3be23b8430c0f97c7ba21c659648c2314c005d677025e57126bb97ff1c4d2a643fed3f2f5df55b0f0a769f453f",
         "phkdf-simple":"3c3c9b609dd876c57ab442b12327921aea05a0fc0d15cd7506444e5d5138c3d6be563fcc5266dd9b1b1c4498d7e7686b931ac565d0aefbc15988c0c5dd794f62"},
        {"args":{"rounds":256},
         "phkdf-pass":"dc0b80f7b8a2e1d968c7e3dc5a1bc8df42c9a215194bf2d311559be5071449690c0ecd3fce96d462f05036e732631e7420194d0177f17d01df58844daa135d5f",
         "phkdf-simple":"e3a57824759647037e9ffd41897d35cf407e27018aed9059b5087b99d9029f48df8cd41069ae6b540fb6c7454678ca89d7600c30c8cc352f31f196ec609fd680"},
        {"args":{"rounds":65535},
         "phkdf-pass":"9c855afd60a462983efa18eb154aa17dcb49a6cb971624c105d9d0a3a9c50ff870267d1893f694128d665103aa4dd0ccb38471bc149987489f90c129dcbd4226",
         "phkdf-simple":"df7e0b5a9446d7cf591c6000700acfd0bb77bd79eb7eb5716028dc4aa0f059260b8500ac34ab7827a515359ed6c08ed492e57a65204322adfdf85a8a4a0cd362"},
        {"args":{"rounds":65536},
         "phkdf-pass":"a358062764aebe3cbb48975087c4f4c8e8566ae4374e9c11ea6174e78276d8479ffb24f4243028e9e6578a93472f5a9074a58820b7d25c3d588f3be344681db7",
         "phkdf-simple":"4296add104a87cf36097b419b7d746ff4ee7dd2b74ae86f108a01e2d3d90442abf0ae28bb20d0b5df93ee9052ce7f1684c506a77ca9479448cf72aac01031b34"},
        {"args":{"rounds":250000},
         "phkdf-pass":"c103e328eb7cc399cd6a3428b1fca25492916afe4e9a58b127b45f88831fd4b75fb9a2305fa7e1053445df26fcdaa38cd4a1923374a496a692e63b12541228dd",
         "phkdf-simple":"5d45e6a76ead2e32f87af30717fc740cd885460cd6e9bb3992d3b45f4b1fee2011e93aaf41c5adee97956aeee59c911130da5c2217bb0b5f9aa589cb5ccefac5"}
    ]
},{
    "name":"xkcd password reuse #1",
    "args":{
        "username":"Imperfect User",
        "password":"Password reuse between multiple deployments of the G3P can be safe(-ish), but adds risk and fragility, often meaningfully so. See https://xkcd.com/792/",
        "domain-tag":"Every authentication service provider inherently has offline cracking attacks against its own password database, even if PAKE is used. When you set a password, you are inherently providing that service with the means to verify your password. If a password is reused and its entropy is low enough to be cracked, access to the right authentication database can be used to bootstrap attacks on other accounts.",
        "rounds":2010
    },
    "results":{
        "phkdf-pass":"3fddedbcff2fa169a25ea4c2371aba40c7a318203c83ae798571edf152548a888b3abffb4a12a11eaddbcb07ab76cce6fe1c65c2877f88b982fa7697f3c79755",
        "phkdf-simple":"8f0d5efddc97d3243b45641646ea259a4f7d5a2b30e6712f003120c59cf1ea89a2441ed8d851978180cdd3a1bfb6716879b3cbfa0449762fd76304adc42924f8"
    }
},{
    "name":"xkcd password reuse #2",
    "args":{
        "username":"Imperfect User",
        "password":"Password reuse between multiple deployments of the G3P can be safe(-ish), but adds risk and fragility, often meaningfully so. See https://xkcd.com/792/",
        "domain-tag":"How do you know that your password is really being prehashed on your own device? Even if this does indeed happen, how do you know that it happens every single time? In the context of a webapp, it's relatively easy to covertly inject arbitrary code into selected page loads. Thus it is possible that the first 99 times you log into a webpage, you get a completely legitimate login page that properly prehashes your password in your browser. But on that 100th login, maybe you are instead presented with a webpage that steals your password in addition to its normal login functionality. It would be relatively easy to make such an attack covertly in such a way that is likely to turn surreptitious, leaving no trace that the attack ever happened. This is easiest to accomplish if the attacker is providing the webapp, or has the cooperation of those who do. However this isn't always necessary. At the start of the Arab Spring, Facebook's login page was not delivered over a TLS-authenticated channel. This oversight allowed state actors to steal user's passwords by injecting their own malicious code into Facebook's login page as it traversed Internet Service Providers inside their respective countries. Installed applications can be somewhat more resistant to selective-pageload style attacks, but more generally, malware on endpoints is a significant attack vector to be concerned about. Shoulder-surfing attacks upon password entry are another. Consider these things carefully when making decisions with security implications, such as whether or not to reuse a password and in what context(s).",
        "rounds":2010
    },
    "results":{
        "phkdf-pass":"6af1c0ebc88ffa062e64c8b8e8036afd67541a82f9ac6294e8f6484b9374b42e267b493673768da981ed39be7b6dd1bcf6969553c12f4ece2bf326849ced5c76",
        "phkdf-simple":"2557aa139b168ff55c0ef4fc7f461d196b71d65285dc170bb12400be213f45b784bd867bf05043321259a22e2db1dd7ce1437b2ad1e2666538c88ed7761a1925"
    }
},{
    "name":"trivial inputs",
    "args":{
        "username":"",
        "password":"",
        "credentials":[],
        "seguid":"",
        "domain-tag":"",
        "long-tag":"",
        "echo-tag":"",
        "rounds":0,
        "role":[],
        "seed-tags":[]
    },
    "results":{
        "phkdf-pass":"c9ff8125f0f0b41ff5cfc8898dd8c6b845cfc2087d061d79909180c2ec7655d122bf83e7530f71b14188d05c601789451d49a499ef13a818e29f878bc6d0886d",
        "phkdf-simple":"f6a475fb6b69e1f430be7ce0f2239734cd47ad74befcd9138ac540fabb2db9a9743ced90de72317dd92f12aefc4532beb33919a41a550f5db3aa9c8f755c889b"
    }
},{
    "name":"password padding",
    "args":{
        "username":"tests with very long inputs",
        "password":"back references",
        "domain-tag":"your-domain-name-here.example",
        "long-tag":{"ref":"phkdf first light, elaborated","len":5112},
        "rounds":255
    },
    "results":[
        {"phkdf-pass":"8ac05ffc273d77cf3e9f6b8774846d468a7e3161eafd121eae55b64faf87b846",
         "phkdf-simple":"cc69d0eef4cd4ae9dc8f48e40cf0b66559ab658c15ca14113e93f200035df26f"},
        {"args":{"long-tag":{"ref":"phkdf first light, elaborated","len":5113}},
         "phkdf-pass":"012ed22757a0ef88a5f70f413670b9cd4fdebddcd1ea8cb20255af136d9e0ae8",
         "phkdf-simple":"dc0e25c54ccfb6219ceb0432216594310a72662f26fb09f806a4fee7f46f44c5"},
        {"args":{
            "username":{
                "ref":"phkdf unicode test, lightly extended on top",
                "len":3042,
                "algorithm":"phkdf-simple"
            }},
         "phkdf-pass":"c3d2f4a40940a2594f6bb14fc61875b90c5a2bdceb987cedfd1ae0ba7180f099",
         "phkdf-simple":"df7cfabc0d5b3c917351e5b5ea080ce75a9207656ee2d1c2a24020776f9abb93"
        },
        {"args":{
            "username":{
                "ref":"phkdf unicode test, lightly extended on top",
                "len":3043,
                "algorithm":"phkdf-simple"
            }},
         "phkdf-pass":"e6fa06a3c290fa89717704357033fd2a22616612d486c5d5659a1af71017f5bd",
         "phkdf-simple":"0db07b29582746244cf97cd2e9c33c4ade4f962f9b10dc068e0e241befc371c3"
        },
        {"args":{
            "username":{
                "ref":"phkdf unicode test, lightly extended on top",
                "len":3042,
                "algorithm":"phkdf-simple"
            },
            "password":{
                "ref":"phkdf unicode test, inset naval story with a reference",
                "len":101,
                "index":1
            }},
         "phkdf-pass":"19e939911583b77ca7135c5ef6b2aecf113c5083e9aa4a52479a5a8cc543caa3",
         "phkdf-simple":"00bfac3be31d3bd2ca166529ea314490d2df56f833a7c1f5a14716f55ce4a993"
        },
        {"args":{
            "username":{
                "ref":"phkdf unicode test, lightly extended on top",
                "len":3042,
                "algorithm":"phkdf-simple"
            },
            "password":{
                "ref":"phkdf unicode test, inset naval story with a reference",
                "len":102,
                "index":1
            }},
         "phkdf-pass":"892bdd032e9a71ef92d6fcbfea5c753058dc1c13c4ceeac00fa8eb75bb2a897c",
         "phkdf-simple":"0984cf6357aaee83b273081cac1791d61aee1839217472c13477834293d04229"
        },
        {"args":{
            "long-tag":{
                "ref":"phkdf first light, elaborated",
                "len":5049,
                "algorithm":"phkdf-simple"
            },
            "username":{
                "ref":"phkdf unicode test, lightly extended on top",
                "len":3106
            }
           },
         "phkdf-pass":"fa8d31b1bef03ddc5732df60f514df0d91ed4cb08664a932821a80c331607b60",
         "phkdf-simple":"0d58861c36abeb344feed044ce34b19ef68abdbf96e2dbe9afcc6768d17f0dc3"
        },
        {"args":{
            "long-tag":{
                "ref":"phkdf first light, elaborated",
                "len":5049,
                "algorithm":"phkdf-simple"
            },
            "username":{
                "ref":"phkdf unicode test, lightly extended on top",
                "len":3106
            },
            "password":{
                "ref":"phkdf unicode test, inset naval story with a reference",
                "len":164,
                "index":2
            }},
         "phkdf-pass":"fe8dd527cfec4dbea25f3d09e75aa68e529d92b4c5e1c4520b074823977b1cce",
         "phkdf-simple":"b6b06d79e41921a7dabcc196e567325ee5322cf051816e86e5c0b5b19ebc62e9"
        },
        {"args":{
            "long-tag":{"ref":"phkdf first light, elaborated","len":5049},
            "username":{
                "ref":"phkdf unicode test, lightly extended on top",
                "len":3106
            },
            "password":{
                "ref":"phkdf unicode test, inset naval story with a reference",
                "len":165,
                "index":2
            }},
         "phkdf-pass":"35940281d66bf0b53dde2b5627c7eab749931511bd0883e8cb888ce72b08d288",
         "phkdf-simple":"d936b839c5ff1a8bfef208b9f8c2918bbc9c41ba7db9d75b9e17df94f2221fc7"
        }
    ]
}]
