summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorisnowfy <isnowfy@gmail.com>2012-06-22 10:47:39 +0000
committerisnowfy <isnowfy@gmail.com>2012-06-22 10:47:39 +0000
commit063b6a0c9f80887e4b481c1e98c32872b11587e4 (patch)
treea4e2e1d2a5dda679c62faa2b37077019c3c979e9
parentd63ebce6d100bdbdf06c38081312275b8d243977 (diff)
downloadencryptchat-063b6a0c9f80887e4b481c1e98c32872b11587e4.zip
encryptchat-063b6a0c9f80887e4b481c1e98c32872b11587e4.tar.gz
encryptchat-063b6a0c9f80887e4b481c1e98c32872b11587e4.tar.bz2
modify use little js lib
-rw-r--r--crypto.js1
1 files changed, 1 insertions, 0 deletions
diff --git a/crypto.js b/crypto.js
new file mode 100644
index 0000000..7016e5d
--- /dev/null
+++ b/crypto.js
@@ -0,0 +1 @@
+var Aes={};Aes.cipher=function(e,t){var n=4,r=t.length/n-1,i=[[],[],[],[]];for(var s=0;s<4*n;s++)i[s%4][Math.floor(s/4)]=e[s];i=Aes.addRoundKey(i,t,0,n);for(var o=1;o<r;o++)i=Aes.subBytes(i,n),i=Aes.shiftRows(i,n),i=Aes.mixColumns(i,n),i=Aes.addRoundKey(i,t,o,n);i=Aes.subBytes(i,n),i=Aes.shiftRows(i,n),i=Aes.addRoundKey(i,t,r,n);var u=new Array(4*n);for(var s=0;s<4*n;s++)u[s]=i[s%4][Math.floor(s/4)];return u},Aes.keyExpansion=function(e){var t=4,n=e.length/4,r=n+6,i=new Array(t*(r+1)),s=new Array(4);for(var o=0;o<n;o++){var u=[e[4*o],e[4*o+1],e[4*o+2],e[4*o+3]];i[o]=u}for(var o=n;o<t*(r+1);o++){i[o]=new Array(4);for(var a=0;a<4;a++)s[a]=i[o-1][a];if(o%n==0){s=Aes.subWord(Aes.rotWord(s));for(var a=0;a<4;a++)s[a]^=Aes.rCon[o/n][a]}else n>6&&o%n==4&&(s=Aes.subWord(s));for(var a=0;a<4;a++)i[o][a]=i[o-n][a]^s[a]}return i},Aes.subBytes=function(e,t){for(var n=0;n<4;n++)for(var r=0;r<t;r++)e[n][r]=Aes.sBox[e[n][r]];return e},Aes.shiftRows=function(e,t){var n=new Array(4);for(var r=1;r<4;r++){for(var i=0;i<4;i++)n[i]=e[r][(i+r)%t];for(var i=0;i<4;i++)e[r][i]=n[i]}return e},Aes.mixColumns=function(e,t){for(var n=0;n<4;n++){var r=new Array(4),i=new Array(4);for(var s=0;s<4;s++)r[s]=e[s][n],i[s]=e[s][n]&128?e[s][n]<<1^283:e[s][n]<<1;e[0][n]=i[0]^r[1]^i[1]^r[2]^r[3],e[1][n]=r[0]^i[1]^r[2]^i[2]^r[3],e[2][n]=r[0]^r[1]^i[2]^r[3]^i[3],e[3][n]=r[0]^i[0]^r[1]^r[2]^i[3]}return e},Aes.addRoundKey=function(e,t,n,r){for(var i=0;i<4;i++)for(var s=0;s<r;s++)e[i][s]^=t[n*4+s][i];return e},Aes.subWord=function(e){for(var t=0;t<4;t++)e[t]=Aes.sBox[e[t]];return e},Aes.rotWord=function(e){var t=e[0];for(var n=0;n<3;n++)e[n]=e[n+1];return e[3]=t,e},Aes.sBox=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],Aes.rCon=[[0,0,0,0],[1,0,0,0],[2,0,0,0],[4,0,0,0],[8,0,0,0],[16,0,0,0],[32,0,0,0],[64,0,0,0],[128,0,0,0],[27,0,0,0],[54,0,0,0]],Aes.Ctr={},Aes.Ctr.encrypt=function(e,t,n){var r=16;if(n!=128&&n!=192&&n!=256)return"";e=Utf8.encode(e),t=Utf8.encode(t);var i=n/8,s=new Array(i);for(var o=0;o<i;o++)s[o]=isNaN(t.charCodeAt(o))?0:t.charCodeAt(o);var u=Aes.cipher(s,Aes.keyExpansion(s));u=u.concat(u.slice(0,i-16));var a=new Array(r),f=(new Date).getTime(),l=f%1e3,c=Math.floor(f/1e3),h=Math.floor(Math.random()*65535);for(var o=0;o<2;o++)a[o]=l>>>o*8&255;for(var o=0;o<2;o++)a[o+2]=h>>>o*8&255;for(var o=0;o<4;o++)a[o+4]=c>>>o*8&255;var p="";for(var o=0;o<8;o++)p+=String.fromCharCode(a[o]);var d=Aes.keyExpansion(u),v=Math.ceil(e.length/r),m=new Array(v);for(var g=0;g<v;g++){for(var y=0;y<4;y++)a[15-y]=g>>>y*8&255;for(var y=0;y<4;y++)a[15-y-4]=g/4294967296>>>y*8;var b=Aes.cipher(a,d),w=g<v-1?r:(e.length-1)%r+1,E=new Array(w);for(var o=0;o<w;o++)E[o]=b[o]^e.charCodeAt(g*r+o),E[o]=String.fromCharCode(E[o]);m[g]=E.join("")}var S=p+m.join("");return S=Base64.encode(S),S},Aes.Ctr.decrypt=function(e,t,n){var r=16;if(n!=128&&n!=192&&n!=256)return"";e=Base64.decode(e),t=Utf8.encode(t);var i=n/8,s=new Array(i);for(var o=0;o<i;o++)s[o]=isNaN(t.charCodeAt(o))?0:t.charCodeAt(o);var u=Aes.cipher(s,Aes.keyExpansion(s));u=u.concat(u.slice(0,i-16));var a=new Array(8);ctrTxt=e.slice(0,8);for(var o=0;o<8;o++)a[o]=ctrTxt.charCodeAt(o);var f=Aes.keyExpansion(u),l=Math.ceil((e.length-8)/r),c=new Array(l);for(var h=0;h<l;h++)c[h]=e.slice(8+h*r,8+h*r+r);e=c;var p=new Array(e.length);for(var h=0;h<l;h++){for(var d=0;d<4;d++)a[15-d]=h>>>d*8&255;for(var d=0;d<4;d++)a[15-d-4]=(h+1)/4294967296-1>>>d*8&255;var v=Aes.cipher(a,f),m=new Array(e[h].length);for(var o=0;o<e[h].length;o++)m[o]=v[o]^e[h].charCodeAt(o),m[o]=String.fromCharCode(m[o]);p[h]=m.join("")}var g=p.join("");return g=Utf8.decode(g),g};var Base64={};Base64.code="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",Base64.encode=function(e,t){t=typeof t=="undefined"?!1:t;var n,r,i,s,o,u,a,f,l=[],c="",h,p,d,v=Base64.code;p=t?e.encodeUTF8():e,h=p.length%3;if(h>0)while(h++<3)c+="=",p+="\0";for(h=0;h<p.length;h+=3)n=p.charCodeAt(h),r=p.charCodeAt(h+1),i=p.charCodeAt(h+2),s=n<<16|r<<8|i,o=s>>18&63,u=s>>12&63,a=s>>6&63,f=s&63,l[h/3]=v.charAt(o)+v.charAt(u)+v.charAt(a)+v.charAt(f);return d=l.join(""),d=d.slice(0,d.length-c.length)+c,d},Base64.decode=function(e,t){t=typeof t=="undefined"?!1:t;var n,r,i,s,o,u,a,f,l=[],c,h,p=Base64.code;h=t?e.decodeUTF8():e;for(var d=0;d<h.length;d+=4)s=p.indexOf(h.charAt(d)),o=p.indexOf(h.charAt(d+1)),u=p.indexOf(h.charAt(d+2)),a=p.indexOf(h.charAt(d+3)),f=s<<18|o<<12|u<<6|a,n=f>>>16&255,r=f>>>8&255,i=f&255,l[d/4]=String.fromCharCode(n,r,i),a==64&&(l[d/4]=String.fromCharCode(n,r)),u==64&&(l[d/4]=String.fromCharCode(n));return c=l.join(""),t?c.decodeUTF8():c};var Utf8={};Utf8.encode=function(e){var t=e.replace(/[\u0080-\u07ff]/g,function(e){var t=e.charCodeAt(0);return String.fromCharCode(192|t>>6,128|t&63)});return t=t.replace(/[\u0800-\uffff]/g,function(e){var t=e.charCodeAt(0);return String.fromCharCode(224|t>>12,128|t>>6&63,128|t&63)}),t},Utf8.decode=function(e){var t=e.replace(/[\u00e0-\u00ef][\u0080-\u00bf][\u0080-\u00bf]/g,function(e){var t=(e.charCodeAt(0)&15)<<12|(e.charCodeAt(1)&63)<<6|e.charCodeAt(2)&63;return String.fromCharCode(t)});return t=t.replace(/[\u00c0-\u00df][\u0080-\u00bf]/g,function(e){var t=(e.charCodeAt(0)&31)<<6|e.charCodeAt(1)&63;return String.fromCharCode(t)}),t},(typeof Crypto=="undefined"||!Crypto.util)&&function(){var e=window.Crypto={},t=e.util={rotl:function(e,t){return e<<t|e>>>32-t},rotr:function(e,t){return e<<32-t|e>>>t},endian:function(e){if(e.constructor==Number)return t.rotl(e,8)&16711935|t.rotl(e,24)&4278255360;for(var n=0;n<e.length;n++)e[n]=t.endian(e[n]);return e},randomBytes:function(e){for(var t=[];e>0;e--)t.push(Math.floor(Math.random()*256));return t},bytesToWords:function(e){for(var t=[],n=0,r=0;n<e.length;n++,r+=8)t[r>>>5]|=e[n]<<24-r%32;return t},wordsToBytes:function(e){for(var t=[],n=0;n<e.length*32;n+=8)t.push(e[n>>>5]>>>24-n%32&255);return t},bytesToHex:function(e){for(var t=[],n=0;n<e.length;n++)t.push((e[n]>>>4).toString(16)),t.push((e[n]&15).toString(16));return t.join("")},hexToBytes:function(e){for(var t=[],n=0;n<e.length;n+=2)t.push(parseInt(e.substr(n,2),16));return t},bytesToBase64:function(e){if(typeof btoa=="function")return btoa(n.bytesToString(e));for(var t=[],r=0;r<e.length;r+=3)for(var i=e[r]<<16|e[r+1]<<8|e[r+2],s=0;s<4;s++)r*8+s*6<=e.length*8?t.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(i>>>6*(3-s)&63)):t.push("=");return t.join("")},base64ToBytes:function(e){if(typeof atob=="function")return n.stringToBytes(atob(e));e=e.replace(/[^A-Z0-9+\/]/ig,"");for(var t=[],r=0,i=0;r<e.length;i=++r%4)i!=0&&t.push(("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(e.charAt(r-1))&Math.pow(2,-2*i+8)-1)<<i*2|"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(e.charAt(r))>>>6-i*2);return t}};e=e.charenc={},e.UTF8={stringToBytes:function(e){return n.stringToBytes(unescape(encodeURIComponent(e)))},bytesToString:function(e){return decodeURIComponent(escape(n.bytesToString(e)))}};var n=e.Binary={stringToBytes:function(e){for(var t=[],n=0;n<e.length;n++)t.push(e.charCodeAt(n)&255);return t},bytesToString:function(e){for(var t=[],n=0;n<e.length;n++)t.push(String.fromCharCode(e[n]));return t.join("")}}}(),function(){var e=Crypto,t=e.util,n=e.charenc,r=n.UTF8,i=n.Binary,s=e.MD5=function(e,n){var r=t.wordsToBytes(s._md5(e));return n&&n.asBytes?r:n&&n.asString?i.bytesToString(r):t.bytesToHex(r)};s._md5=function(e){e.constructor==String&&(e=r.stringToBytes(e));var n=t.bytesToWords(e),i=e.length*8;e=1732584193;for(var u=-271733879,a=-1732584194,f=271733878,l=0;l<n.length;l++)n[l]=(n[l]<<8|n[l]>>>24)&16711935|(n[l]<<24|n[l]>>>8)&4278255360;n[i>>>5]|=128<<i%32,n[(i+64>>>9<<4)+14]=i,i=s._ff;var c=s._gg,p=s._hh,d=s._ii;for(l=0;l<n.length;l+=16){var v=e,m=u,y=a,b=f;e=i(e,u,a,f,n[l+0],7,-680876936),f=i(f,e,u,a,n[l+1],12,-389564586),a=i(a,f,e,u,n[l+2],17,606105819),u=i(u,a,f,e,n[l+3],22,-1044525330),e=i(e,u,a,f,n[l+4],7,-176418897),f=i(f,e,u,a,n[l+5],12,1200080426),a=i(a,f,e,u,n[l+6],17,-1473231341),u=i(u,a,f,e,n[l+7],22,-45705983),e=i(e,u,a,f,n[l+8],7,1770035416),f=i(f,e,u,a,n[l+9],12,-1958414417),a=i(a,f,e,u,n[l+10],17,-42063),u=i(u,a,f,e,n[l+11],22,-1990404162),e=i(e,u,a,f,n[l+12],7,1804603682),f=i(f,e,u,a,n[l+13],12,-40341101),a=i(a,f,e,u,n[l+14],17,-1502002290),u=i(u,a,f,e,n[l+15],22,1236535329),e=c(e,u,a,f,n[l+1],5,-165796510),f=c(f,e,u,a,n[l+6],9,-1069501632),a=c(a,f,e,u,n[l+11],14,643717713),u=c(u,a,f,e,n[l+0],20,-373897302),e=c(e,u,a,f,n[l+5],5,-701558691),f=c(f,e,u,a,n[l+10],9,38016083),a=c(a,f,e,u,n[l+15],14,-660478335),u=c(u,a,f,e,n[l+4],20,-405537848),e=c(e,u,a,f,n[l+9],5,568446438),f=c(f,e,u,a,n[l+14],9,-1019803690),a=c(a,f,e,u,n[l+3],14,-187363961),u=c(u,a,f,e,n[l+8],20,1163531501),e=c(e,u,a,f,n[l+13],5,-1444681467),f=c(f,e,u,a,n[l+2],9,-51403784),a=c(a,f,e,u,n[l+7],14,1735328473),u=c(u,a,f,e,n[l+12],20,-1926607734),e=p(e,u,a,f,n[l+5],4,-378558),f=p(f,e,u,a,n[l+8],11,-2022574463),a=p(a,f,e,u,n[l+11],16,1839030562),u=p(u,a,f,e,n[l+14],23,-35309556),e=p(e,u,a,f,n[l+1],4,-1530992060),f=p(f,e,u,a,n[l+4],11,1272893353),a=p(a,f,e,u,n[l+7],16,-155497632),u=p(u,a,f,e,n[l+10],23,-1094730640),e=p(e,u,a,f,n[l+13],4,681279174),f=p(f,e,u,a,n[l+0],11,-358537222),a=p(a,f,e,u,n[l+3],16,-722521979),u=p(u,a,f,e,n[l+6],23,76029189),e=p(e,u,a,f,n[l+9],4,-640364487),f=p(f,e,u,a,n[l+12],11,-421815835),a=p(a,f,e,u,n[l+15],16,530742520),u=p(u,a,f,e,n[l+2],23,-995338651),e=d(e,u,a,f,n[l+0],6,-198630844),f=d(f,e,u,a,n[l+7],10,1126891415),a=d(a,f,e,u,n[l+14],15,-1416354905),u=d(u,a,f,e,n[l+5],21,-57434055),e=d(e,u,a,f,n[l+12],6,1700485571),f=d(f,e,u,a,n[l+3],10,-1894986606),a=d(a,f,e,u,n[l+10],15,-1051523),u=d(u,a,f,e,n[l+1],21,-2054922799),e=d(e,u,a,f,n[l+8],6,1873313359),f=d(f,e,u,a,n[l+15],10,-30611744),a=d(a,f,e,u,n[l+6],15,-1560198380),u=d(u,a,f,e,n[l+13],21,1309151649),e=d(e,u,a,f,n[l+4],6,-145523070),f=d(f,e,u,a,n[l+11],10,-1120210379),a=d(a,f,e,u,n[l+2],15,718787259),u=d(u,a,f,e,n[l+9],21,-343485551),e=e+v>>>0,u=u+m>>>0,a=a+y>>>0,f=f+b>>>0}return t.endian([e,u,a,f])},s._ff=function(e,t,n,r,i,s,o){return e=e+(t&n|~t&r)+(i>>>0)+o,(e<<s|e>>>32-s)+t},s._gg=function(e,t,n,r,i,s,o){return e=e+(t&r|n&~r)+(i>>>0)+o,(e<<s|e>>>32-s)+t},s._hh=function(e,t,n,r,i,s,o){return e=e+(t^n^r)+(i>>>0)+o,(e<<s|e>>>32-s)+t},s._ii=function(e,t,n,r,i,s,o){return e=e+(n^(t|~r))+(i>>>0)+o,(e<<s|e>>>32-s)+t},s._blocksize=16,s._digestsize=16}(); \ No newline at end of file