网站建设公司对比分析报告2345网址是啥

当前位置: 首页 > news >正文

网站建设公司对比分析报告,2345网址是啥,北关网站制作,网站切图大图本文转载于我的博客从Authy中导出账户和secret 前言 因为最近买了CanoKey#xff0c;所以多算试一下CanoKey的TOTP功能#xff0c;但是之前一直用的Authy并且它默认不支持导出功能 在网上找了一些文档#xff0c;终于在github上找到了一个有效且简单的方法 目前网上大部分… 本文转载于我的博客从Authy中导出账户和secret 前言 因为最近买了CanoKey所以多算试一下CanoKey的TOTP功能但是之前一直用的Authy并且它默认不支持导出功能 在网上找了一些文档终于在github上找到了一个有效且简单的方法 目前网上大部分都是Copy至少百度是这个B样还要装Golang之类的环境麻烦至极 其实用一个浏览器就OK了 准备 Authy Desktop版 Chrome内核的浏览器我用的Edge
开始 首先打开authy desktop并完成登录和同步 然后在打开快捷方式的{% label 属性 blue %}在{% label 目标 blue %}这一栏的路径后面添加 –remote-debugging-port5858添加完成后先关闭之前启动的authy然后再点击该快捷方式启动authy 然后在浏览器里访问http://localhost:5858 点击{% label “Twilio Authy” blue %} 然后在弹出的开发者工具栏里依次点击{% label “SourcesSnippets New snippet” blue %} 接着在代码段编辑器窗口中粘贴以下代码 // QRious v4.0.2 | © 2017 Alasdair Mercer | GPL v3 License Based on jsqrencode | © 2010 tzexecpc.com | GPL v3 License !function(t,e){objecttypeof exportsundefined!typeof module?module.exportse():functiontypeof definedefine.amd?define(e):t.QRiouse()}(this,function(){use strict;function t(t,e){var n;returnfunctiontypeof Object.create?nObject.create(t):(s.prototypet,nnew s,s.prototypenull),ei(!0,n,e),n}function e(e,n,s,r){var othis;returnstring!typeof e(rs,sn,ne,enull),function!typeof n(rs,sn,nfunction(){return o.apply(this,arguments)}),i(!1,n,o,r),n.prototypet(o.prototype,s),n.prototype.constructorn,n.classe||o.class,n.super_o,n}function i(t,e,i){for(var n,s,a0,h(io.call(arguments,2)).length;ah;a){si[a];for(n in s)t!r.call(s,n)||(e[n]s[n])}}function n(){}var sfunction(){},rObject.prototype.hasOwnProperty,oArray.prototype.slice,ae;n.class_Nevis,n.super_Object,n.extenda;var hn,fh.extend(function(t,e,i){this.qrioust,this.elemente,this.element.qrioust,this.enabledBoolean(i)},{draw:function(t){},getElement:function(){return this.enabled||(this.enabled!0,this.render()),this.element},getModuleSize:function(t){var ethis.qrious,ie.padding||0,nMath.floor((e.size-2*i)/t.width);return Math.max(1,n)},getOffset:function(t){var ethis.qrious,ie.padding;if(null!i)return i;var nthis.getModuleSize(t),sMath.floor((e.size-n*t.width)/2);return Math.max(0,s)},render:function(t){this.enabled(this.resize(),this.reset(),this.draw(t))},reset:function(){},resize:function(){}}),cf.extend({draw:function(t){var e,i,nthis.qrious,sthis.getModuleSize(t),rthis.getOffset(t),othis.element.getContext(2d);for(o.fillStylen.foreground,o.globalAlphan.foregroundAlpha,e0;et.width;e)for(i0;it.width;i)t.buffer[i*t.widthe]o.fillRect(s*er,sir,s,s)},reset:function(){var tthis.qrious,ethis.element.getContext(2d),it.size;e.lineWidth1,e.clearRect(0,0,i,i),e.fillStylet.background,e.globalAlphat.backgroundAlpha,e.fillRect(0,0,i,i)},resize:function(){var tthis.element;t.widtht.heightthis.qrious.size}}),uh.extend(null,{BLOCK:[0,11,15,19,23,27,31,16,18,20,22,24,26,28,20,22,24,24,26,28,28,22,24,24,26,26,28,28,24,24,26,26,26,28,28,24,26,26,26,28,28]}),lh.extend(null,{BLOCKS:[1,0,19,7,1,0,16,10,1,0,13,13,1,0,9,17,1,0,34,10,1,0,28,16,1,0,22,22,1,0,16,28,1,0,55,15,1,0,44,26,2,0,17,18,2,0,13,22,1,0,80,20,2,0,32,18,2,0,24,26,4,0,9,16,1,0,108,26,2,0,43,24,2,2,15,18,2,2,11,22,2,0,68,18,4,0,27,16,4,0,19,24,4,0,15,28,2,0,78,20,4,0,31,18,2,4,14,18,4,1,13,26,2,0,97,24,2,2,38,22,4,2,18,22,4,2,14,26,2,0,116,30,3,2,36,22,4,4,16,20,4,4,12,24,2,2,68,18,4,1,43,26,6,2,19,24,6,2,15,28,4,0,81,20,1,4,50,30,4,4,22,28,3,8,12,24,2,2,92,24,6,2,36,22,4,6,20,26,7,4,14,28,4,0,107,26,8,1,37,22,8,4,20,24,12,4,11,22,3,1,115,30,4,5,40,24,11,5,16,20,11,5,12,24,5,1,87,22,5,5,41,24,5,7,24,30,11,7,12,24,5,1,98,24,7,3,45,28,15,2,19,24,3,13,15,30,1,5,107,28,10,1,46,28,1,15,22,28,2,17,14,28,5,1,120,30,9,4,43,26,17,1,22,28,2,19,14,28,3,4,113,28,3,11,44,26,17,4,21,26,9,16,13,26,3,5,107,28,3,13,41,26,15,5,24,30,15,10,15,28,4,4,116,28,17,0,42,26,17,6,22,28,19,6,16,30,2,7,111,28,17,0,46,28,7,16,24,30,34,0,13,24,4,5,121,30,4,14,47,28,11,14,24,30,16,14,15,30,6,4,117,30,6,14,45,28,11,16,24,30,30,2,16,30,8,4,106,26,8,13,47,28,7,22,24,30,22,13,15,30,10,2,114,28,19,4,46,28,28,6,22,28,33,4,16,30,8,4,122,30,22,3,45,28,8,26,23,30,12,28,15,30,3,10,117,30,3,23,45,28,4,31,24,30,11,31,15,30,7,7,116,30,21,7,45,28,1,37,23,30,19,26,15,30,5,10,115,30,19,10,47,28,15,25,24,30,23,25,15,30,13,3,115,30,2,29,46,28,42,1,24,30,23,28,15,30,17,0,115,30,10,23,46,28,10,35,24,30,19,35,15,30,17,1,115,30,14,21,46,28,29,19,24,30,11,46,15,30,13,6,115,30,14,23,46,28,44,7,24,30,59,1,16,30,12,7,121,30,12,26,47,28,39,14,24,30,22,41,15,30,6,14,121,30,6,34,47,28,46,10,24,30,2,64,15,30,17,4,122,30,29,14,46,28,49,10,24,30,24,46,15,30,4,18,122,30,13,32,46,28,48,14,24,30,42,32,15,30,20,4,117,30,40,7,47,28,43,22,24,30,10,67,15,30,19,6,118,30,18,31,47,28,34,34,24,30,20,61,15,30],FINAL_FORMAT:[30660,29427,32170,30877,26159,25368,27713,26998,21522,20773,24188,23371,17913,16590,20375,19104,13663,12392,16177,14854,9396,8579,11994,11245,5769,5054,7399,6608,1890,597,3340,2107],LEVELS:{L:1,M:2,Q:3,H:4}}),_h.extend(null,{EXPONENT:[1,2,4,8,16,32,64,128,29,58,116,232,205,135,19,38,76,152,45,90,180,117,234,201,143,3,6,12,24,48,96,192,157,39,78,156,37,74,148,53,106,212,181,119,238,193,159,35,70,140,5,10,20,40,80,160,93,186,105,210,185,111,222,161,95,190,97,194,153,47,94,188,101,202,137,15,30,60,120,240,253,231,211,187,107,214,177,127,254,225,223,163,91,182,113,226,217,175,67,134,17,34,68,136,13,26,52,104,208,189,103,206,129,31,62,124,248,237,199,147,59,118,236,197,151,51,102,204,133,23,46,92,184,109,218,169,79,158,33,66,132,21,42,84,168,77,154,41,82,164,85,170,73,146,57,114,228,213,183,115,230,209,191,99,198,145,63,126,252,229,215,179,123,246,241,255,227,219,171,75,150,49,98,196,149,55,110,220,165,87,174,65,130,25,50,100,200,141,7,14,28,56,112,224,221,167,83,166,81,162,89,178,121,242,249,239,195,155,43,86,172,69,138,9,18,36,72,144,61,122,244,245,247,243,251,235,203,139,11,22,44,88,176,125,250,233,207,131,27,54,108,216,173,71,142,0],LOG:[255,0,1,25,2,50,26,198,3,223,51,238,27,104,199,75,4,100,224,14,52,141,239,129,28,193,105,248,200,8,76,113,5,138,101,47,225,36,15,33,53,147,142,218,240,18,130,69,29,181,194,125,106,39,249,185,201,154,9,120,77,228,114,166,6,191,139,98,102,221,48,253,226,152,37,179,16,145,34,136,54,208,148,206,143,150,219,189,241,210,19,92,131,56,70,64,30,66,182,163,195,72,126,110,107,58,40,84,250,133,186,61,202,94,155,159,10,21,121,43,78,212,229,172,115,243,167,87,7,112,192,247,140,128,99,13,103,74,222,237,49,197,254,24,227,165,153,119,38,184,180,124,17,68,146,217,35,32,137,46,55,63,209,91,149,188,207,205,144,135,151,178,220,252,190,97,242,86,211,171,20,42,93,158,132,60,57,83,71,109,65,162,31,45,67,216,183,123,164,118,196,23,73,236,127,12,111,246,108,161,59,82,41,157,85,170,251,96,134,177,187,204,62,90,203,89,95,176,156,169,160,81,11,245,22,235,122,117,44,215,79,174,213,233,230,231,173,232,116,214,244,234,168,80,88,175]}),dh.extend(null,{BLOCK:[3220,1468,2713,1235,3062,1890,2119,1549,2344,2936,1117,2583,1330,2470,1667,2249,2028,3780,481,4011,142,3098,831,3445,592,2517,1776,2234,1951,2827,1070,2660,1345,3177]}),vh.extend(function(t){var e,i,n,s,r,ot.value.length;for(this._badness[],this._levell.LEVELS[t.level],this._polynomial[],this._valuet.value,this._version0,this._stringBuffer[];this._version40(this._version,n4(this._level-1)16(this._version-1),sl.BLOCKS[n],rl.BLOCKS[n],el.BLOCKS[n],il.BLOCKS[n],ne(sr)r-3(this._version9),!(on)););this._dataBlocke,this._eccBlocki,this._neccBlock1s,this._neccBlock2r;var athis.width174*this._version;this.bufferv._createArray(aa),this._eccv._createArray(e(ei)(sr)r),this._maskv._createArray((a(a1)1)/2),this._insertFinders(),this._insertAlignments(),this.buffer[8a(a-8)]1,this._insertTimingGap(),this._reverseMask(),this._insertTimingRowAndColumn(),this._insertVersion(),this._syncMask(),this._convertBitStream(o),this._calculatePolynomial(),this._appendEccToData(),this._interleaveBlocks(),this._pack(),this._finish()},{_addAlignment:function(t,e){var i,nthis.buffer,sthis.width;for(n[tse]1,i-2;i2;i)n[tis(e-2)]1,n[t-2s(ei1)]1,n[t2s(ei)]1,n[ti1s*(e2)]1;for(i0;i2;i)this._setMask(t-1,ei),this._setMask(t1,e-i),this._setMask(t-i,e-1),this._setMask(ti,e1)},_appendData:function(t,e,i,n){var s,r,o,athis._polynomial,hthis.stringBuffer;for(r0;rn;r)h[ir]0;for(r0;re;r){if(255!(s.LOG[h[tr]^h[i]]))for(o1;on;o)h[io-1]h[io]^_.EXPONENT[v.modN(sa[n-o])];else for(oi;oin;o)h[o]h[o1];h[in-1]255s?0:.EXPONENT[v._modN(sa[0])]}},_appendEccToData:function(){var t,e0,ithis._dataBlock,nthis._calculateMaxLength(),sthis._eccBlock;for(t0;tthis._neccBlock1;t)this._appendData(e,i,n,s),ei,ns;for(t0;tthis._neccBlock2;t)this._appendData(e,i1,n,s),ei1,ns},_applyMask:function(t){var e,i,n,s,rthis.buffer,othis.width;switch(t){case 0:for(s0;so;s)for(n0;no;n)ns1||this._isMasked(n,s)||(r[ns*o]^1);break;case 1:for(s0;so;s)for(n0;no;n)1s||this._isMasked(n,s)||(r[ns*o]^1);break;case 2:for(s0;so;s)for(e0,n0;no;n,e)3e(e0),e||this._isMasked(n,s)||(r[ns*o]^1);break;case 3:for(i0,s0;so;s,i)for(3i(i0),ei,n0;no;n,e)3e(e0),e||this._isMasked(n,s)||(r[ns*o]^1);break;case 4:for(s0;so;s)for(e0,is11,n0;no;n,e)3e(e0,i!i),i||this._isMasked(n,s)||(r[ns*o]^1);break;case 5:for(i0,s0;so;s,i)for(3i(i0),e0,n0;no;n,e)3e(e0),(ns1)!(!e|!i)||this._isMasked(n,s)||(r[ns*o]^1);break;case 6:for(i0,s0;so;s,i)for(3i(i0),e0,n0;no;n,e)3e(e0),(ns1)(eei)1||this._isMasked(n,s)||(r[ns*o]^1);break;case 7:for(i0,s0;so;s,i)for(3i(i0),e0,n0;no;n,e)3e(e0),(eei)(ns1)1||this._isMasked(n,s)||(r[nso]^1)}},_calculateMaxLength:function(){return this._dataBlock(this._neccBlock1this._neccBlock2)this._neccBlock2},_calculatePolynomial:function(){var t,e,ithis._eccBlock,nthis.polynomial;for(n[0]1,t0;ti;t){for(n[t1]1,et;e0;e–)n[e]n[e]?n[e-1]^.EXPONENT[v.modN(.LOG[n[e]]t)]:n[e-1];n[0]_.EXPONENT[v.modN(.LOG[n[0]]t)]}for(t0;ti;t)n[t]_.LOG[n[t]]},_checkBadness:function(){var t,e,i,n,s,r0,othis._badness,athis.buffer,hthis.width;for(s0;sh-1;s)for(n0;nh-1;n)(a[nh*s]a[n1hs]a[nh(s1)]a[n1h*(s1)]||!(a[nh*s]||a[n1hs]||a[nh(s1)]||a[n1h*(s1)]))(rv.N2);var f0;for(s0;sh;s){for(i0,o[0]0,t0,n0;nh;n)t(ea[nh*s])?o[i]:o[i]1,f(te)?1:-1;rthis._getBadness(i)}f0(f-f);var c0,uf;for(uu2,u1;uh*h;)u-h*h,c;for(rc*v.N4,n0;nh;n){for(i0,o[0]0,t0,s0;sh;s)t(ea[nh*s])?o[i]:o[i]1,te;rthis._getBadness(i)}return r},_convertBitStream:function(t){var e,i,nthis._ecc,sthis._version;for(i0;it;i)n[i]this._value.charCodeAt(i);var rthis._stringBuffern.slice(),othis._calculateMaxLength();to-2(to-2,s9t–);var at;if(s9){for(r[a2]0,r[a3]0;a–;)er[a],r[a3]|255e4,r[a2]e4;r[2]|255t4,r[1]t4,r[0]64|t12}else{for(r[a1]0,r[a2]0;a–;)er[a],r[a2]|255e4,r[a1]e4;r[1]|255t4,r[0]64|t4}for(at3-(s10);ao;)r[a]236,r[a]17},_getBadness:function(t){var e,i0,nthis._badness;for(e0;et;e)n[e]5(iv.N1n[e]-5);for(e3;et-1;e2)n[e-2]n[e2]n[e2]n[e-1]n[e-1]n[e1]3*n[e-1]ne(iv.N3);return i},_finish:function(){this._stringBufferthis.buffer.slice();var t,e,i0,n3e4;for(e0;e8(this._applyMask(e),(tthis._checkBadness())n(nt,ie),7!i);e)this.bufferthis._stringBuffer.slice();i!ethis._applyMask(i),nl.FINAL_FORMAT[i(this._level-13)];var sthis.buffer,rthis.width;for(e0;e8;e,n1)1n(s[r-1-e8*r]1,e6?s[8re]1:s[8r(e1)]1);for(e0;e7;e,n1)1n(s[8r*(r-7e)]1,e?s[6-e8*r]1:s[78*r]1)},_interleaveBlocks:function(){var t,e,ithis._dataBlock,nthis._ecc,sthis._eccBlock,r0,othis._calculateMaxLength(),athis._neccBlock1,hthis._neccBlock2,fthis._stringBuffer;for(t0;ti;t){for(e0;ea;e)n[r]f[te*i];for(e0;eh;e)n[r]f[aite(i1)]}for(e0;eh;e)n[r]f[aite(i1)];for(t0;ts;t)for(e0;eah;e)n[r]f[otes];this._stringBuffern},_insertAlignments:function(){var t,e,i,nthis._version,sthis.width;if(n1)for(tu.BLOCK[n],is-7;;){for(es-7;et-3(this._addAlignment(e,i),!(et));)e-t;if(it9)break;i-t,this._addAlignment(6,i),this._addAlignment(i,6)}},_insertFinders:function(){var t,e,i,n,sthis.buffer,rthis.width;for(t0;t3;t){for(e0,n0,1t(er-7),2t(nr-7),s[n3r(e3)]1,i0;i6;i)s[nire]1,s[nr(ei1)]1,s[n6r(ei)]1,s[ni1r(e6)]1;for(i1;i5;i)this._setMask(ni,e1),this._setMask(n1,ei1),this._setMask(n5,ei),this._setMask(ni1,e5);for(i2;i4;i)s[nir(e2)]1,s[n2r(ei1)]1,s[n4r(ei)]1,s[ni1r(e4)]1}},_insertTimingGap:function(){var t,e,ithis.width;for(e0;e7;e)this._setMask(7,e),this._setMask(i-8,e),this._setMask(7,ei-7);for(t0;t8;t)this._setMask(t,7),this._setMask(ti-8,7),this._setMask(t,i-8)},_insertTimingRowAndColumn:function(){var t,ethis.buffer,ithis.width;for(t0;ti-14;t)1t?(this._setMask(8t,6),this._setMask(6,8t)):(e[8t6i]1,e[6i(8t)]1)},_insertVersion:function(){var t,e,i,n,sthis.buffer,rthis._version,othis.width;if(r6)for(td.BLOCK[r-7],e17,i0;i6;i)for(n0;n3;n,e–)1(e11?re-12:te)?(s[5-io(2-no-11)]1,s[2-no-11o(5-i)]1):(this._setMask(5-i,2-no-11),this._setMask(2-no-11,5-i))},_isMasked:function(t,e){var iv._getMaskBit(t,e);return 1this._mask[i]},_pack:function(){var t,e,i,n1,s1,rthis.width,or-1,ar-1,h(this._dataBlockthis._eccBlock)*(this._neccBlock1this._neccBlock2)this._neccBlock2;for(e0;eh;e)for(tthis._stringBuffer[e],i0;i8;i,t1){128t(this.buffer[or*a]1);do{s?o–:(o,n?0!a?a–:(n!n,6(o-2)(o–,a9)):a!r-1?a:(n!n,6(o-2)(o–,a-8))),s!s}while(this._isMasked(o,a))}},_reverseMask:function(){var t,e,ithis.width;for(t0;t9;t)this._setMask(t,8);for(t0;t8;t)this._setMask(ti-8,8),this._setMask(8,t);for(e0;e7;e)this._setMask(8,ei-7)},_setMask:function(t,e){var iv._getMaskBit(t,e);this._mask[i]1},_syncMask:function(){var t,e,ithis.width;for(e0;ei;e)for(t0;te;t)this.buffer[ti*e]this._setMask(t,e)}},{_createArray:function(t){var e,i[];for(e0;et;e)i[e]0;return i},_getMaskBit:function(t,e){var i;return te(it,te,ei),ie,ie*e,i1,it},_modN:function(t){for(;t255;)t((t-255)8)(255t);return t},N1:3,N2:3,N3:40,N4:10}),pv,mf.extend({draw:function(){this.element.srcthis.qrious.toDataURL()},reset:function(){this.element.src},resize:function(){var tthis.element;t.widtht.heightthis.qrious.size}}),gh.extend(function(t,e,i,n){this.namet,this.modifiableBoolean(e),this.defaultValuei,this._valueTransformern},{transform:function(t){var ethis._valueTransformer;returnfunctiontypeof e?e(t,this):t}}),kh.extend(null,{abs:function(t){return null!t?Math.abs(t):null},hasOwn:function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},noop:function(){},toUpperCase:function(t){return null!t?t.toUpperCase():null}}),wh.extend(function(t){this.options{},t.forEach(function(t){this.options[t.name]t},this)},{exists:function(t){return null!this.options[t]},get:function(t,e){return w._get(this.options[t],e)},getAll:function(t){var e,ithis.options,n{};for(e in i)k.hasOwn(i,e)(n[e]w._get(i[e],t));return n},init:function(t,e,i){function!typeof i(ik.noop);var n,s;for(n in this.options)k.hasOwn(this.options,n)(sthis.options[n],w._set(s,s.defaultValue,e),w._createAccessor(s,e,i));this._setAll(t,e,!0)},set:function(t,e,i){return this._set(t,e,i)},setAll:function(t,e){return this._setAll(t,e)},_set:function(t,e,i,n){var sthis.options[t];if(!s)throw new Error(Invalid option: t);if(!s.modifiable!n)throw new Error(Option cannot be modified: t);return w._set(s,e,i)},_setAll:function(t,e,i){if(!t)return!1;var n,s!1;for(n in t)k.hasOwn(t,n)this._set(n,t[n],e,i)(s!0);return s}},{_createAccessor:function(t,e,i){var n{get:function(){return w._get(t,e)}};t.modifiable(n.setfunction(n){w._set(t,n,e)i(n,t)}),Object.defineProperty(e,t.name,n)},_get:function(t,e){return e[_t.name]},_set:function(t,e,i){var n_t.name,si[n],rt.transform(null!e?e:t.defaultValue);return i[n]r,r!s}}),Mw,bh.extend(function(){this._services{}},{getService:function(t){var ethis._services[t];if(!e)throw new Error(Service is not being managed with name: t);return e},setService:function(t,e){if(this._services[t])throw new Error(Service is already managed with name: t);e(this._services[t]e)}}),Bnew M([new g(background,!0,white),new g(backgroundAlpha,!0,1,k.abs),new g(element),new g(foreground,!0,black),new g(foregroundAlpha,!0,1,k.abs),new g(level,!0,L,k.toUpperCase),new g(mime,!0,image/png),new g(padding,!0,null,k.abs),new g(size,!0,100,k.abs),new g(value,!0,)]),ynew b,Oh.extend(function(t){B.init(t,this,this.update.bind(this));var eB.get(element,this),iy.getService(element),nei.isCanvas(e)?e:i.createCanvas(),sei.isImage(e)?e:i.createImage();this._canvasRenderernew c(this,n,!0),this._imageRenderernew m(this,s,se),this.update()},{get:function(){return B.getAll(this)},set:function(t){B.setAll(t,this)this.update()},toDataURL:function(t){return this.canvas.toDataURL(t||this.mime)},update:function(){var tnew p({level:this.level,value:this.value});this._canvasRenderer.render(t),this._imageRenderer.render(t)}},{use:function(t){y.setService(t.getName(),t)}});Object.defineProperties(O.prototype,{canvas:{get:function(){return this._canvasRenderer.getElement()}},image:{get:function(){return this._imageRenderer.getElement()}}});var AO,Lh.extend({getName:function(){}}).extend({createCanvas:function(){},createImage:function(){},getName:function(){returnelement},isCanvas:function(t){},isImage:function(t){}}).extend({createCanvas:function(){return document.createElement(canvas)},createImage:function(){return document.createElement(img)},isCanvas:function(t){return t instanceof HTMLCanvasElement},isImage:function(t){return t instanceof HTMLImageElement}});return A.use(new L),A});// Based on https://github.com/LinusU/base32-encode/blob/master/index.js function hex_to_b32(hex) { let alphabet ABCDEFGHIJKLMNOPQRSTUVWXYZ234567; let bytes []; for (let i 0; i hex.length; i 2) { bytes.push(parseInt(hex.substr(i, 2), 16)); } let bits 0; let value 0; let output ; for (let i 0; i bytes.length; i) { value (value 8) | bytes[i]; bits 8; while (bits 5) { output alphabet[(value (bits - 5)) 31]; bits - 5; } } if (bits 0) { output alphabet[(value (5 - bits)) 31]; } return output; }// Based on https://github.com/adriancooney/console.image function console_image(url, size) { console.log(%c, font-size: 1px; padding: Math.floor(size / 2) px Math.floor(size / 2) px; line-height: size px; background: url( url ); color: transparent;); }(function(console) { console.save function(data, filename) { if (!data) { console.error(Console.save: No data); return; } if (typeof data object) { data JSON.stringify(data, undefined, 4) } var blob new Blob([data], {type: text/json}), e document.createEvent(MouseEvents), a document.createElement(a); a.download filename; a.href window.URL.createObjectURL(blob); a.dataset.downloadurl [text/json, a.download, a.href].join(:); e.initMouseEvent(click, true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); a.dispatchEvent(e); } })(console);console.clear(); console.warn(Heres your Authy tokens:); var data appManager.getModel().map(function(i) { var secretSeed i.secretSeed; if (typeof secretSeed undefined) {secretSeed i.encryptedSeed; } var secret (i.markedForDeletion false ? i.decryptedSeed : hex_to_b32(secretSeed)); var period (i.digits 7 ? 10 : 30); var totp_uri otpauth://totp/\({encodeURIComponent(i.name)}?secret\){secret}digits\({i.digits}period\){period}; var qr_size 250; var qr_url (new QRious({value: totp_uri, size: qr_size})).toDataURL(); console.group(i.name);console.log(TOTP secret:, secret);console.log(TOTP URI:, totp_uri);console_image(qr_url, qr_size); console.groupEnd(); return {name: i.name, secret: secret, uri: totp_uri}; }); //console.save(data, authy_backup.json);如果你担心该代码会发送你的信息你可以断开网络连接再使用上方代码 右键单击左侧导航器窗格中的代码段名称然后选择 {% label “Script snippet #1 Run” blue %} 然后在控制台你可以看到输出了包含了authy内所有的账户的信息并且会为每个账户自动生成二维码方便手机导入 你也可以使用下方代码将其打包为json文件方便导入其他密码管理器 // Based on https://github.com/LinusU/base32-encode/blob/master/index.js function hex_to_b32(hex) { let alphabet ABCDEFGHIJKLMNOPQRSTUVWXYZ234567; let bytes []; for (let i 0; i hex.length; i 2) { bytes.push(parseInt(hex.substr(i, 2), 16)); } let bits 0; let value 0; let output ; for (let i 0; i bytes.length; i) { value (value 8) | bytes[i]; bits 8; while (bits 5) { output alphabet[(value (bits - 5)) 31]; bits - 5; } } if (bits 0) { output alphabet[(value (5 - bits)) 31]; } return output; }// from https://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid#answer-2117523 function uuidv4() { return xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx.replace(/[xy]/g, function © { var r Math.random() * 16 | 0, v c x ? r : (r 0x3 | 0x8); return v.toString(16); }); }// from https://gist.github.com/gboudreau/94bb0c11a6209c82418d01a59d958c93 function saveToFile(data, filename) { if (!data) { console.error(Console.save: No data); return; } if (typeof data object) { data JSON.stringify(data, undefined, 4) } const blob new Blob([data], { type: text/json }); const e document.createEvent(MouseEvents); const a document.createElement(a); a.download filename; a.href window.URL.createObjectURL(blob); a.dataset.downloadurl [text/json, a.download, a.href].join(:); e.initMouseEvent(click, true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); a.dispatchEvent(e); }function deEncrypt({ log false, save false }) {const folder {id: uuidv4(),name: Imported from Authy};const bw {encrypted: false,folders: [folder],items: appManager.getModel().map((i) {let secretSeed i.secretSeed;if (typeof secretSeed undefined) {secretSeed i.encryptedSeed;}const secret (i.markedForDeletion false ? i.decryptedSeed : hex_to_b32(secretSeed));const period (i.digits 7 ? 10 : 30);const issuer, rawName? i.name.split(:): [, i.name];const name [issuer, rawName].filter(Boolean).join(: );const totp otpauth://totp/\({name}?secret\){secret}digits\({i.digits}period\){period}${issuer ? issuer issuer : };return ({id: uuidv4(),organizationId: null,folderId: folder.id,type: 1,reprompt: 0,name,notes: null,favorite: false,login: {username: null,password: null,totp},collectionIds: null});}),};if (log) console.log(JSON.stringify(bw));if (save) saveToFile(bw, authy-to-bitwarden-export.json); }deEncrypt({log: true,save: true, });其他系统 其他系统大同小异具体请参考原文Generating Authy passwords on other authenticators 参考资料 Generating Authy passwords on other authenticators 版权声明: 本博客所有文章除特别声明外均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GoodBoyboy s Blog惬意小屋-点滴记忆