SimpleAES.js 5.1 KB

12345678
  1. /*
  2. Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
  3. Available via Academic Free License >= 2.1 OR the modified BSD license.
  4. see: http://dojotoolkit.org/license for details
  5. */
  6. if(!dojo._hasResource["dojox.encoding.crypto.SimpleAES"]){dojo._hasResource["dojox.encoding.crypto.SimpleAES"]=true;dojo.provide("dojox.encoding.crypto.SimpleAES");dojo.require("dojox.encoding.base64");dojo.require("dojox.encoding.crypto._base");(function(){var _1=[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];var _2=[[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]];function _3(_4,w){var Nb=4;var Nr=w.length/Nb-1;var _5=[[],[],[],[]];for(var i=0;i<4*Nb;i++){_5[i%4][Math.floor(i/4)]=_4[i];}_5=_6(_5,w,0,Nb);for(var _7=1;_7<Nr;_7++){_5=_8(_5,Nb);_5=_9(_5,Nb);_5=_a(_5,Nb);_5=_6(_5,w,_7,Nb);}_5=_8(_5,Nb);_5=_9(_5,Nb);_5=_6(_5,w,Nr,Nb);var _b=new Array(4*Nb);for(var i=0;i<4*Nb;i++){_b[i]=_5[i%4][Math.floor(i/4)];}return _b;};function _8(s,Nb){for(var r=0;r<4;r++){for(var c=0;c<Nb;c++){s[r][c]=_1[s[r][c]];}}return s;};function _9(s,Nb){var t=new Array(4);for(var r=1;r<4;r++){for(var c=0;c<4;c++){t[c]=s[r][(c+r)%Nb];}for(var c=0;c<4;c++){s[r][c]=t[c];}}return s;};function _a(s,Nb){for(var c=0;c<4;c++){var a=new Array(4);var b=new Array(4);for(var i=0;i<4;i++){a[i]=s[i][c];b[i]=s[i][c]&128?s[i][c]<<1^283:s[i][c]<<1;}s[0][c]=b[0]^a[1]^b[1]^a[2]^a[3];s[1][c]=a[0]^b[1]^a[2]^b[2]^a[3];s[2][c]=a[0]^a[1]^b[2]^a[3]^b[3];s[3][c]=a[0]^b[0]^a[1]^a[2]^b[3];}return s;};function _6(_c,w,_d,Nb){for(var r=0;r<4;r++){for(var c=0;c<Nb;c++){_c[r][c]^=w[_d*4+c][r];}}return _c;};function _e(_f){var Nb=4;var Nk=_f.length/4;var Nr=Nk+6;var w=new Array(Nb*(Nr+1));var _10=new Array(4);for(var i=0;i<Nk;i++){var r=[_f[4*i],_f[4*i+1],_f[4*i+2],_f[4*i+3]];w[i]=r;}for(var i=Nk;i<(Nb*(Nr+1));i++){w[i]=new Array(4);for(var t=0;t<4;t++){_10[t]=w[i-1][t];}if(i%Nk==0){_10=_11(_12(_10));for(var t=0;t<4;t++){_10[t]^=_2[i/Nk][t];}}else{if(Nk>6&&i%Nk==4){_10=_11(_10);}}for(var t=0;t<4;t++){w[i][t]=w[i-Nk][t]^_10[t];}}return w;};function _11(w){for(var i=0;i<4;i++){w[i]=_1[w[i]];}return w;};function _12(w){w[4]=w[0];for(var i=0;i<4;i++){w[i]=w[i+1];}return w;};function _13(_14,_15,_16){if(!(_16==128||_16==192||_16==256)){return "";}var _17=_16/8;var _18=new Array(_17);for(var i=0;i<_17;i++){_18[i]=_15.charCodeAt(i)&255;}var key=_3(_18,_e(_18));key=key.concat(key.slice(0,_17-16));var _19=16;var _1a=new Array(_19);var _1b=(new Date()).getTime();for(var i=0;i<4;i++){_1a[i]=(_1b>>>i*8)&255;}for(var i=0;i<4;i++){_1a[i+4]=(_1b/4294967296>>>i*8)&255;}var _1c=_e(key);var _1d=Math.ceil(_14.length/_19);var _1e=new Array(_1d);for(var b=0;b<_1d;b++){for(var c=0;c<4;c++){_1a[15-c]=(b>>>c*8)&255;}for(var c=0;c<4;c++){_1a[15-c-4]=(b/4294967296>>>c*8);}var _1f=_3(_1a,_1c);var _20=b<_1d-1?_19:(_14.length-1)%_19+1;var ct="";for(var i=0;i<_20;i++){var _21=_14.charCodeAt(b*_19+i);var _22=_21^_1f[i];ct+=((_22<16)?"0":"")+_22.toString(16);}_1e[b]=ct;}var _23="";for(var i=0;i<8;i++){_23+=((_1a[i]<16)?"0":"")+_1a[i].toString(16);}return _23+" "+_1e.join(" ");};function _24(s){var ret=[];s.replace(/(..)/g,function(str){ret.push(parseInt(str,16));});return ret;};function _25(_26,_27,_28){if(!(_28==128||_28==192||_28==256)){return "";}var _29=_28/8;var _2a=new Array(_29);for(var i=0;i<_29;i++){_2a[i]=_27.charCodeAt(i)&255;}var _2b=_e(_2a);var key=_3(_2a,_2b);key=key.concat(key.slice(0,_29-16));var _2c=_e(key);_26=_26.split(" ");var _2d=16;var _2e=new Array(_2d);var _2f=_26[0];_2e=_24(_2f);var _30=new Array(_26.length-1);for(var b=1;b<_26.length;b++){for(var c=0;c<4;c++){_2e[15-c]=((b-1)>>>c*8)&255;}for(var c=0;c<4;c++){_2e[15-c-4]=((b/4294967296-1)>>>c*8)&255;}var _31=_3(_2e,_2c);var pt="";var tmp=_24(_26[b]);for(var i=0;i<tmp.length;i++){var _32=_26[b].charCodeAt(i);var _33=tmp[i]^_31[i];pt+=String.fromCharCode(_33);}_30[b-1]=pt;}return _30.join("");};function _34(str){return str.replace(/[\0\t\n\v\f\r\xa0!-]/g,function(c){return "!"+c.charCodeAt(0)+"!";});};function _35(str){return str.replace(/!\d\d?\d?!/g,function(c){return String.fromCharCode(c.slice(1,-1));});};dojox.encoding.crypto.SimpleAES=new (function(){this.encrypt=function(_36,key){return _13(_36,key,256);};this.decrypt=function(_37,key){return _25(_37,key,256);};})();})();}