<?php
/**
* Usage: Run this from the command line to generate a secure passphrase in the format
* of stereotypical bottom keymashing.
*
* php bottom-responder.php | xclip
*
* Why? Because furries ruin everything, including bottom jokes.
*/
function random_str(int $length, string $charset): string {
$c = strlen($charset) - 1;
if ($c < 1) {
throw new RangeException("Dumb");
}
$pieces = [];
for ($i = 0; $i < $length; ++$i) {
$x = random_int(0, $c);
array_push($pieces, $charset[$x]);
}
return implode($pieces);
}
/*
8 home row characters + 8 to 12 random letters + 4 home row characters
Entropy estimates
Lower end: 26.575 + 38.864 + 13.288 -> 78 bits
Upper end: 26.575 + 58.296 + 13.288 -> 98 bits
*/
$x = random_int(8, 12);
echo random_str(8, 'asdfghjkl;') . random_str($x, 'qwertyuiopasdfghjkl;zxcvbnm,.') . random_str(8, 'asdfghjkl;');
- Output for 8.4.7
- skhjlkkktn.btpci.oovlhkgk;gk
- Output for 8.4.6
- fjdshs;srssylmjw,plkjfllgka
- Output for 8.4.5
- kssshdfsxwobqc,vfmsddjlkaja
- Output for 8.4.4
- dkfjla;;gdbqwera;jkagsldshjf
- Output for 8.4.3
- jhklsdsauhvsqlxqxtmgs;gfdlj
- Output for 8.4.2
- jfsahasdsx,nj;co,phlk;lhjd
- Output for 8.4.1
- flgdfshflffuxr..dflgadfd
- Output for 8.3.21
- ;lg;kassxoahojrarizjfagh;gf
- Output for 8.3.20
- hd;jldhf,lcxkzqtgdlhlkjd
- Output for 8.3.19
- fdkdjfs;,elspgu,ralnj;ad;dls
- Output for 8.3.18
- ;;shh;lgpbxmuziigf;ldgjsdlk
- Output for 8.3.17
- hddfhdffxuscoatywe,gldd;dha
- Output for 8.3.16
- gjs;k;lsmjjyrlpxcn,aflshlla
- Output for 8.3.15
- jh;fjaddtvkybydbnkzhlsjlkak
- Output for 8.3.14
- ljdglfdliyovtirvfggalsdff
- Output for 8.3.13
- sfajfdlfubsimzylikhjhllkl
- Output for 8.3.12
- dkkgf;gaqnmrporolg;ajsaa
- Output for 8.3.11
- ks;dhd;sjkyuiaxiyohhkhjglhjj
- Output for 8.3.10
- ;ggfadfsxysazkttltgh;ajs;f
- Output for 8.3.9
- l;dfksjj.fdu.sj.,xlgddlajs
- Output for 8.3.8
- fhfkd;l;yck.dndi;adlfghd
- Output for 8.3.7
- djhfflkfozwa.p.rysl;ldjsa
- Output for 8.3.6
- jflasag;,yutcpwkpqoahsjskkg
- Output for 8.3.5
- dgldkljsj,l,,pdxyxaldsjaaa
- Output for 8.3.4
- hhjljkldj.lxnzraddjdkkhj
- Output for 8.3.3
- jkkghas;eulaw.kewmgdsfg;aaj
- Output for 8.3.2
- gjljklfktegdunoyqjshjfsfh
- Output for 8.3.1
- ghhjjffgpynaibiitihgh;sgkk
- Output for 8.3.0
- fskfahgsorv.ob..itkgsafhdh
- Output for 8.2.28
- ghd;;dhjvzzorudc;hfhdkaj
- Output for 8.2.27
- lh;ljddhtfhgbutdzglllhadl
- Output for 8.2.26
- a;h;daffmicb;tag,;dj;;gfhf
- Output for 8.2.25
- dkgh;ak;puflz;,dhfgajlkd
- Output for 8.2.24
- ddhaghgjrcyc.u,y,puyhhhdks;f
- Output for 8.2.23
- akshaalghptbpe,lcbbygjgjlfad
- Output for 8.2.22
- khdkfhjffpg.;w,wskg;sdsh
- Output for 8.2.21
- kkh;dagsvhyryud,;fsjhlfsl
- Output for 8.2.20
- ;klaska;micefzmgp;kaaahs;
- Output for 8.2.19
- ;lkhhhgfjdsfuchckrfhfafdhdh
- Output for 8.2.18
- kf;j;d;;hwvjdwivanlfslksfh
- Output for 8.2.17
- fssskfljfw;slsbgvajghafah
- Output for 8.2.16
- ghsjdsaf.iqwewp;jahhafsf;
- Output for 8.2.15
- shsdkjl;,lsjswskagfhh;sfd
- Output for 8.2.14
- ggdss;a;njojb;vuzkxdklkdjhh
- Output for 8.2.13
- ;fjssjhsqbvc;;mue.,daska;gd
- Output for 8.2.12
- ssska;hfwyvs,;jwpassghjaf
- Output for 8.2.11
- ;ldklhdj,cctxjnjfoklklhgks
- Output for 8.2.10
- ss;jshklcjeafkpojlg;ljk;lag
- Output for 8.2.9
- dskfskjfjfonk.lqgooohshsskks
- Output for 8.2.8
- agkfhshsrtn.xvykxq,skjhgddl
- Output for 8.2.7
- assaafjjovsvjtwtcvsdsjlhaf
- Output for 8.2.6
- ;salgsddxu;reciy,ss;hhkal
- Output for 8.2.5
- sfjhs;dkvnaivlhktgkngd;gh;kh
- Output for 8.2.4
- j;;kh;klgphyjt.eiogajfkhk;
- Output for 8.2.3
- kskllksla.avwptnghfkjjshg
- Output for 8.2.2
- s;skddjggdzuaezrapakfafkd;
- Output for 8.2.1
- gf;;skglxzpwelmujshjkhkf
- Output for 8.2.0
- kkfghdsjdsifdmfzr.;sgghls;
- Output for 8.1.32
- fjfdsdsawu,d;eta,;kshs;fg
- Output for 8.1.31
- a;d;dafahndqrquralkgskks
- Output for 8.1.30
- hlffgkjldvn,lrsgpibyh;ljjfdd
- Output for 8.1.29
- ajjkgfsdwoxjwzavzaklsslal;l
- Output for 8.1.28
- kjs;;hdatm.,,wb.vsh;hjjsl
- Output for 8.1.27
- gshjjdssqicqb.arryug;lhskfha
- Output for 8.1.26
- dafdfahkbiruqqyiycwggshjlaa
- Output for 8.1.25
- hafhhdlhvk;csx;pp;fqjflkdjfs
- Output for 8.1.24
- fakajjs;nvmaohgbyygdhfjjka
- Output for 8.1.23
- lalaagsd;fjeevr;hdf;hjff
- Output for 8.1.22
- skdhjjjjlurobyikkdshakhf
- Output for 8.1.21
- g;djgjafkyflbokbbxbeglldfjk;
- Output for 8.1.20
- sssfl;;suissax;qhnhdalkgkg
- Output for 8.1.19
- ghkfhlkalhnuosdojz.fhhhgdjs
- Output for 8.1.18
- gggsfhlgnfugtyobolahkalsl
- Output for 8.1.17
- agsjaa;g,jittswk,f;gffjak
- Output for 8.1.16
- gllg;kllhnxekiqjhuusfhgafjhd
- Output for 8.1.15
- jlalajslgfhg,v.kmdbssdjsdds
- Output for 8.1.14
- dh;kfgfgjgmgw,hislsafh;af
- Output for 8.1.13
- gklhja;kxiigmcjkol.xhljgdsgs
- Output for 8.1.12
- lgkfj;l;wxmhejjajhljl;js
- Output for 8.1.11
- djdsdhjkhfpanurdsbrofsdkljak
- Output for 8.1.10
- ;kdsgdsawoeps;hqkdkghsjdfk
- Output for 8.1.9
- hlkhdlllrhifpx;a;;;ld;as
- Output for 8.1.8
- fjfahaskanyetos;kagkdjhk
- Output for 8.1.7
- skshlladubkxceniztchafgsdag
- Output for 8.1.6
- s;jsgsas;qvq,.movneassagjall
- Output for 8.1.5
- gjdddghgrer.yscuj;hkashfsl
- Output for 8.1.4
- laagh;hdeka;tyjfvkplg;fsfdk
- Output for 8.1.3
- hjljdlgj,yymh;wwjdgggjs;
- Output for 8.1.2
- fdls;kfsymstnbzlkhsjagfh
- Output for 8.1.1
- haskllkjedrg..xqgzggkhsg;h
- Output for 8.1.0
- gshshkjknm;svwfv;khgh;dh;f
- Output for 8.0.30
- k;sjhajg,dknbfqjuaslfjjds
- Output for 8.0.29
- djdakgfkvq,ehj;jauc;lshjjlh
- Output for 8.0.28
- ;hhjl;;;qerjbinpnagskhgkl
- Output for 8.0.27
- jjs;hshlcsrf,viqa;kahkha
- Output for 8.0.26
- glkfj;ssa.zjsqg.tvgj;k;hlj
- Output for 8.0.25
- afjsfadgbdy;,,hsksakd;jh
- Output for 8.0.24
- ha;lajjhbdtquiciuadfs;ajk
- Output for 8.0.23
- ;fkfghhjwdfv,ob,;ksl;fsg
- Output for 8.0.22
- lgjhsjf;bfl.qa.,dsalshfj
- Output for 8.0.21
- lfa;llhkvocvwwmaulf;gg;jg
- Output for 8.0.20
- h;saa;ggruipyswqkha;kfflh
- Output for 8.0.19
- flgldkgkbewwjmykha;adkag
- Output for 8.0.18
- gkd;f;;asnwlidggftjlfjdj;j
- Output for 8.0.17
- hlakgdjjjdajyeygumnjs;dfg;f
- Output for 8.0.16
- flkjfassidddyamlpamaagh;shdl
- Output for 8.0.15
- hk;lfjfdaxhafjzrdstba;glkf;g
- Output for 8.0.14
- gshkjjshc;vqktnulmdjhffksd;
- Output for 8.0.13
- dhfkjggjazhotrupug;jgs;sss
- Output for 8.0.12
- a;ddflkdje;rkbdezdal;alahs
- Output for 8.0.11
- ks;fahggwxhzx.qgbu;ljlkldlj
- Output for 8.0.10
- ajkfggkjrv,dhvjflijls;;kfd
- Output for 8.0.9
- ajaasjfgku.cxxahfkajdsdl
- Output for 8.0.8
- kssfsddlfr,arhzxzksga;fkk
- Output for 8.0.7
- jdshsh;a.gdjssrr;lgddjha
- Output for 8.0.6
- dkgaslkdraankaxgoi;lkdksh;
- Output for 8.0.5
- jd;;lfhavh.jtbclds;kflad
- Output for 8.0.3
- llhhfjdjek;ami,hdjsadsaaf
- Output for 8.0.2
- dgsskdflxynak.g.mgofsgddhgk
- Output for 8.0.1
- sjkfhshdrfguejjinskffalfk
- Output for 8.0.0
- hlkkj;ahjqmu;bfm.i;djaa;kh
- Output for 7.4.33
- dkfggjgllncpshvoxv;aflajgk
- Output for 7.4.32
- gjhghak;ujvodmx;dhgfdgkj
- Output for 7.4.30
- gg;fghajoypbcburb,tvfdjjhjjg
- Output for 7.4.29
- sl;dhgd;bvvkytixfojtgfdhllaj
- Output for 7.4.28
- gsh;lshlytjiiglfxgp.adfshsjs
- Output for 7.4.27
- kfjkaadhknqoi;fwivhhadddasj
- Output for 7.4.26
- ;;hdgkgjyy;w,es,skj;dhfs
- Output for 7.4.25
- f;hfjdhaaambkozgwkkykjj;hjlf
- Output for 7.4.24
- ;gfkjsfsjbwdd.fs,whkjdfjsa
- Output for 7.4.23
- ;jhkjgjkpv;vsxbbrkcfdffdgsk
- Output for 7.4.22
- la;hlsjfuheipkpcrhddjk;sjhs
- Output for 7.4.21
- adgf;shjyfnjanetulazdhl;hdgj
- Output for 7.4.20
- ;;ldhkaljn,prbdhvp;fllfddf
- Output for 7.4.19
- fdafklfsfeuryzhwhdhkgagag
- Output for 7.4.18
- sadddhlaizeewfzvmix.jkajdkga
- Output for 7.4.16
- ld;jjajkqreqdl,ah;assgsfha
- Output for 7.4.15
- lhdhjdjfjuvhaic.xdgfjlkg;
- Output for 7.4.14
- lgfkhjs;,,f,wcyxyyhfffd;sd
- Output for 7.4.13
- ;ljsjjllb,.f,rz,mjakkhhj;
- Output for 7.4.12
- hajgj;akry;sjn;zxifhgk;jkg
- Output for 7.4.11
- hddkshsllugntzlnl;df;jajla
- Output for 7.4.10
- shhdsdsdyzidicxuuskf;ds;;
- Output for 7.4.9
- s;dlajjhmqvvjjysejuxafksdjhh
- Output for 7.4.8
- fsjagladfcmhvfuwzbztfkssasha
- Output for 7.4.7
- kjddghhkonkllaw;,zfh;hlfj;
- Output for 7.4.6
- ;jdkfj;lrtabbsbzszosdggfas;
- Output for 7.4.5
- shlsj;ajs;pnhaehhgygkddhsjh
- Output for 7.4.4
- f;ssfgshla.cumudmkdlfkdgad
- Output for 7.4.3
- sjsf;ahflaskhekxclgkdaahd
- Output for 7.4.2
- g;;fgsgaduwv.eztsxchgkjjkad
- Output for 7.4.1
- sfhakg;hfiuzrv,iuqgxgadfgkak
- Output for 7.4.0
- ;kaaajffnbmjfypmlbvaksfkhf;
- Output for 7.3.33
- l;fsafslygnikiypdahshhhg
- Output for 7.3.32
- jllgadfsjuwotyattg;hkgjad
- Output for 7.3.31
- f;gjgkgarfktt,hefslldf;l
- Output for 7.3.30
- ahjlsd;scjzvncip,agkfgg;sl
- Output for 7.3.29
- ;sgggjhdxb,is,mzjtwjl;jadgh;
- Output for 7.3.28
- ;dk;;glgbaxxvtdajfhlagkd
- Output for 7.3.27
- hjkdh;jaif.zpfn.rtmzdghgagfj
- Output for 7.3.26
- ajahsjgk;idon;dbnjshlllal
- Output for 7.3.25
- fjhhalsg,bexlfdmprdahfklgs
- Output for 7.3.24
- kss;dslh,iyjxqcysds;shfl
- Output for 7.3.23
- fadjhdfkoe.b.,grirc,adhadfgs
- Output for 7.3.22
- j;k;k;k;yzdvxckn;tgvhjfkgdal
- Output for 7.3.21
- kahajasslqmrwhzxkfksdsdf
- Output for 7.3.20
- askgkf;k.imtovkikxlfkkffds
- Output for 7.3.19
- hfgf;l;kyxelyndkobfssldjhh
- Output for 7.3.18
- fjllgdalbdpzvcldjbrekfggjslj
- Output for 7.3.17
- d;skahlldnnlxqxcisbad;hssll
- Output for 7.3.16
- ldafsjhkw;awpczzpahfasjj;aa
- Output for 7.3.15
- faaks;ashjvs;iriy;;;;jjhg
- Output for 7.3.14
- aadsgkdgkdhe.eswaaallkff;
- Output for 7.3.13
- dk;;;h;kpyetxptssfslfgga
- Output for 7.3.12
- lgfggsdlgqulgoqlsgfkh;dd
- Output for 7.3.11
- jjhdgkakgg.;cta;.xws;jfsahh
- Output for 7.3.10
- adfgh;ski;rprksp,easshhkhj
- Output for 7.3.9
- hskjssg;hpitjxgqfgd;gdsd
- Output for 7.3.8
- s;f;dlsjhpdc;absngsdhhajd
- Output for 7.3.7
- jjdkfaljnuaibn,cooutshss;khf
- Output for 7.3.6
- kjhfhhkfiptmubu;hhksfgal
- Output for 7.3.5
- lljkssdduuokdlrunhashafshjh
- Output for 7.3.4
- dflljffawc,hiwavvkak;hfdg
- Output for 7.3.3
- ;jgfhssssbtizcttkjyrgdjjfddf
- Output for 7.3.2
- dakjasls.qfdrehymqkhgfdfdgf
- Output for 7.3.1
- sshjjds;lfxdhaxc;hkfhhhj
- Output for 7.3.0
- jssk;kgdrfcxbopekehkdgfafs
preferences:
82.35 ms | 667 KiB | 5 Q