随分前に d:id:RobinEgg:20111217:p1 で書いたパスワードジェネレーターですが、奇を衒いすぎて意味不明なコードになっていたことと、大元の Crypt-JS が更新されていたのでシンプルに書き直し、ついでに使用するハッシュアルゴリズムも SHA3 に変更して最大で64文字まで算出できるようにしました。
今時の web サービスでパスワードに記号使用不可とか64文字未満で文字数制限とかちょっとあり得ないんですが、往々にしてそういうサービスが跋扈している現状、適宜コードを書き換えるとかしてください(需要あんのか凄く疑問だけど。
javascript: (function(){ var salt = prompt('Salt?') || 'ますたーぱすわーど'; if ( !document.getElementById('cryptojs-sha-hmac') ){ var s = document.createElement('script'); s.id = 'cryptojs-sha-hmac'; s.src = 'https://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/hmac-sha3.js'; void(document.body.appendChild(s)); } var genPass = function(binArray){ var Ascii = ''; for(var i=33; i<127; i++){ Ascii += String.fromCharCode(i); } var passPhrase = ''; for( var i = 0; i < binArray.length; i++){ passPhrase += Ascii.charAt(parseInt(binArray[i], 10) % Ascii.length); } return passPhrase; }; setTimeout(function(){ var hmacBytes = CryptoJS.HmacSHA3(document.domain, salt); var u = new Uint8Array(hmacBytes.sigBytes); for (var i=0; i<hmacBytes.sigBytes; i++) { u[i] = (hmacBytes.words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; } window.prompt('Pass phrase:', genPass(u)); }, 1000); })();
Word 配列から byte 列への変換についてはGoogle グループを参照。