12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077 |
- ;(function(root,factory){
- if(typeof exports==="object"){
- module.exports=exports=factory();
- }else if(typeof define==="function"&&define.amd){
- define([],factory);
- }else{
- root.CryptoJS=factory();
- }
- }(this,
- function(){
- var CryptoJS=CryptoJS||(function(Math,undefined){
- var crypto;
- if(typeof window!=='undefined'&&window.crypto){
- crypto=window.crypto;
- }
- if(typeof self!=='undefined'&&self.crypto){
- crypto=self.crypto;
- }
- if(typeof globalThis!=='undefined'&&globalThis.crypto){
- crypto=globalThis.crypto;
- }
- if(!crypto&&typeof window!=='undefined'&&window.msCrypto){
- crypto=window.msCrypto;
- }
- if(!crypto&&typeof global!=='undefined'&&global.crypto){
- crypto=global.crypto;
- }
- if(!crypto&&typeof require==='function'){
- try{
- crypto=require('crypto');
- }catch(err){}
- }
- var cryptoSecureRandomInt=function(){
- if(crypto){
- if(typeof crypto.getRandomValues==='function'){
- try{
- return crypto.getRandomValues(new Uint32Array(1))[0];
- }catch(err){}
- }
- if(typeof crypto.randomBytes==='function'){
- try{
- return crypto.randomBytes(4).readInt32LE();
- }catch(err){}
- }
- }
- throw new Error('Native crypto module could not be used to get secure random number.');
- };
- var create=Object.create||(function(){
- function F(){}
- return function(obj){
- var subtype;
- F.prototype=obj;
- subtype=new F();
- F.prototype=null;
- return subtype;
- };
- }());
- var C={};
- var C_lib=C.lib={};
- var Base=C_lib.Base=(function(){
- return{
- extend:function(overrides){
- var subtype=create(this);
- if(overrides){
- subtype.mixIn(overrides);
- }
- if(!subtype.hasOwnProperty('init')||this.init===subtype.init){
- subtype.init=function(){
- subtype.$super.init.apply(this,arguments);
- };
- }
- subtype.init.prototype=subtype;
- subtype.$super=this;
- return subtype;
- },
- create:function(){
- var instance=this.extend();
- instance.init.apply(instance,arguments);
- return instance;
- },
- init:function(){},
- mixIn:function(properties){
- for(var propertyName in properties){
- if(properties.hasOwnProperty(propertyName)){
- this[propertyName]=properties[propertyName];
- }
- }
- if(properties.hasOwnProperty('toString')){
- this.toString=properties.toString;
- }
- },
- clone:function(){
- return this.init.prototype.extend(this);
- }
- };
- }());
- var WordArray=C_lib.WordArray=Base.extend({
- init:function(words,sigBytes){
- words=this.words=words||[];
- if(sigBytes!=undefined){
- this.sigBytes=sigBytes;
- }else{
- this.sigBytes=words.length*4;
- }
- },
- toString:function(encoder){
- return(encoder||Hex).stringify(this);
- },
- concat:function(wordArray){
- var thisWords=this.words;
- var thatWords=wordArray.words;
- var thisSigBytes=this.sigBytes;
- var thatSigBytes=wordArray.sigBytes;
- this.clamp();
- if(thisSigBytes%4){
- for(var i=0;i<thatSigBytes;i++){
- var thatByte=(thatWords[i>>>2]>>>(24-(i%4)*8))&0xff;
- thisWords[(thisSigBytes+i)>>>2]|=thatByte<<(24-((thisSigBytes+i)%4)*8);
- }
- }else{
- for(var j=0;j<thatSigBytes;j+=4){
- thisWords[(thisSigBytes+j)>>>2]=thatWords[j>>>2];
- }
- }
- this.sigBytes+=thatSigBytes;
- return this;
- },
- clamp:function(){
- var words=this.words;
- var sigBytes=this.sigBytes;
- words[sigBytes>>>2]&=0xffffffff<<(32-(sigBytes%4)*8);
- words.length=Math.ceil(sigBytes/4);
- },
- clone:function(){
- var clone=Base.clone.call(this);
- clone.words=this.words.slice(0);
- return clone;
- },
- random:function(nBytes){
- var words=[];
- for(var i=0;i<nBytes;i+=4){
- words.push(cryptoSecureRandomInt());
- }
- return new WordArray.init(words,nBytes);
- }
- });
- var C_enc=C.enc={};
- var Hex=C_enc.Hex={
- stringify:function(wordArray){
- var words=wordArray.words;
- var sigBytes=wordArray.sigBytes;
- var hexChars=[];
- for(var i=0;i<sigBytes;i++){
- var bite=(words[i>>>2]>>>(24-(i%4)*8))&0xff;
- hexChars.push((bite>>>4).toString(16));
- hexChars.push((bite&0x0f).toString(16));
- }
- return hexChars.join('');
- },
- parse:function(hexStr){
- var hexStrLength=hexStr.length;
- var words=[];
- for(var i=0;i<hexStrLength;i+=2){
- words[i>>>3]|=parseInt(hexStr.substr(i,2),16)<<(24-(i%8)*4);
- }
- return new WordArray.init(words,hexStrLength/2);
- }
- };
- var Latin1=C_enc.Latin1={
- stringify:function(wordArray){
- var words=wordArray.words;
- var sigBytes=wordArray.sigBytes;
- var latin1Chars=[];
- for(var i=0;i<sigBytes;i++){
- var bite=(words[i>>>2]>>>(24-(i%4)*8))&0xff;
- latin1Chars.push(String.fromCharCode(bite));
- }
- return latin1Chars.join('');
- },
- parse:function(latin1Str){
- var latin1StrLength=latin1Str.length;
- var words=[];
- for(var i=0;i<latin1StrLength;i++){
- words[i>>>2]|=(latin1Str.charCodeAt(i)&0xff)<<(24-(i%4)*8);
- }
- return new WordArray.init(words,latin1StrLength);
- }
- };
- var Utf8=C_enc.Utf8={
- stringify:function(wordArray){
- try{
- return decodeURIComponent(escape(Latin1.stringify(wordArray)));
- }catch(e){
- throw new Error('Malformed UTF-8 data');
- }
- },
- parse:function(utf8Str){
- return Latin1.parse(unescape(encodeURIComponent(utf8Str)));
- }
- };
- var BufferedBlockAlgorithm=C_lib.BufferedBlockAlgorithm=Base.extend({
- reset:function(){
- this._data=new WordArray.init();
- this._nDataBytes=0;
- },
- _append:function(data){
- if(typeof data=='string'){
- data=Utf8.parse(data);
- }
- this._data.concat(data);
- this._nDataBytes+=data.sigBytes;
- },
- _process:function(doFlush){
- var processedWords;
- var data=this._data;
- var dataWords=data.words;
- var dataSigBytes=data.sigBytes;
- var blockSize=this.blockSize;
- var blockSizeBytes=blockSize*4;
- var nBlocksReady=dataSigBytes/blockSizeBytes;
- if(doFlush){
- nBlocksReady=Math.ceil(nBlocksReady);
- }else{
- nBlocksReady=Math.max((nBlocksReady|0)-this._minBufferSize,0);
- }
- var nWordsReady=nBlocksReady*blockSize;
- var nBytesReady=Math.min(nWordsReady*4,dataSigBytes);
- if(nWordsReady){
- for(var offset=0;offset<nWordsReady;offset+=blockSize){
- this._doProcessBlock(dataWords,offset);
- }
- processedWords=dataWords.splice(0,nWordsReady);
- data.sigBytes-=nBytesReady;
- }
- return new WordArray.init(processedWords,nBytesReady);
- },
- clone:function(){
- var clone=Base.clone.call(this);
- clone._data=this._data.clone();
- return clone;
- },
- _minBufferSize:0
- });
- var Hasher=C_lib.Hasher=BufferedBlockAlgorithm.extend({
- cfg:Base.extend(),
- init:function(cfg){
- this.cfg=this.cfg.extend(cfg);
- this.reset();
- },
- reset:function(){
- BufferedBlockAlgorithm.reset.call(this);
- this._doReset();
- },
- update:function(messageUpdate){
- this._append(messageUpdate);
- this._process();
- return this;
- },
- finalize:function(messageUpdate){
- if(messageUpdate){
- this._append(messageUpdate);
- }
- var hash=this._doFinalize();
- return hash;
- },
- blockSize:512/32,
- _createHelper:function(hasher){
- return function(message,cfg){
- return new hasher.init(cfg).finalize(message);
- };
- },
- _createHmacHelper:function(hasher){
- return function(message,key){
- return new C_algo.HMAC.init(hasher,key).finalize(message);
- };
- }
- });
- var C_algo=C.algo={};
- return C;
- }(Math));
- (function(undefined){
- var C=CryptoJS;
- var C_lib=C.lib;
- var Base=C_lib.Base;
- var X32WordArray=C_lib.WordArray;
- var C_x64=C.x64={};
- var X64Word=C_x64.Word=Base.extend({
- init:function(high,low){
- this.high=high;
- this.low=low;
- }
- });
- var X64WordArray=C_x64.WordArray=Base.extend({
- init:function(words,sigBytes){
- words=this.words=words||[];
- if(sigBytes!=undefined){
- this.sigBytes=sigBytes;
- }else{
- this.sigBytes=words.length*8;
- }
- },
- toX32:function(){
- var x64Words=this.words;
- var x64WordsLength=x64Words.length;
- var x32Words=[];
- for(var i=0;i<x64WordsLength;i++){
- var x64Word=x64Words[i];
- x32Words.push(x64Word.high);
- x32Words.push(x64Word.low);
- }
- return X32WordArray.create(x32Words,this.sigBytes);
- },
- clone:function(){
- var clone=Base.clone.call(this);
- var words=clone.words=this.words.slice(0);
- var wordsLength=words.length;
- for(var i=0;i<wordsLength;i++){
- words[i]=words[i].clone();
- }
- return clone;
- }
- });
- }());
- (function(){
- if(typeof ArrayBuffer!='function'){
- return;
- }
- var C=CryptoJS;
- var C_lib=C.lib;
- var WordArray=C_lib.WordArray;
- var superInit=WordArray.init;
- var subInit=WordArray.init=function(typedArray){
- if(typedArray instanceof ArrayBuffer){
- typedArray=new Uint8Array(typedArray);
- }
- if(typedArray instanceof Int8Array||(typeof Uint8ClampedArray!=="undefined"&&typedArray instanceof Uint8ClampedArray)||typedArray instanceof Int16Array||typedArray instanceof Uint16Array||typedArray instanceof Int32Array||typedArray instanceof Uint32Array||typedArray instanceof Float32Array||typedArray instanceof Float64Array){
- typedArray=new Uint8Array(typedArray.buffer,typedArray.byteOffset,typedArray.byteLength);
- }
- if(typedArray instanceof Uint8Array){
- var typedArrayByteLength=typedArray.byteLength;
- var words=[];
- for(var i=0;i<typedArrayByteLength;i++){
- words[i>>>2]|=typedArray[i]<<(24-(i%4)*8);
- }
- superInit.call(this,words,typedArrayByteLength);
- }else{
- superInit.apply(this,arguments);
- }
- };
- subInit.prototype=WordArray;
- }());
- (function(){
- var C=CryptoJS;
- var C_lib=C.lib;
- var WordArray=C_lib.WordArray;
- var C_enc=C.enc;
- var Utf16BE=C_enc.Utf16=C_enc.Utf16BE={
- stringify:function(wordArray){
- var words=wordArray.words;
- var sigBytes=wordArray.sigBytes;
- var utf16Chars=[];
- for(var i=0;i<sigBytes;i+=2){
- var codePoint=(words[i>>>2]>>>(16-(i%4)*8))&0xffff;
- utf16Chars.push(String.fromCharCode(codePoint));
- }
- return utf16Chars.join('');
- },
- parse:function(utf16Str){
- var utf16StrLength=utf16Str.length;
- var words=[];
- for(var i=0;i<utf16StrLength;i++){
- words[i>>>1]|=utf16Str.charCodeAt(i)<<(16-(i%2)*16);
- }
- return WordArray.create(words,utf16StrLength*2);
- }
- };
- C_enc.Utf16LE={
- stringify:function(wordArray){
- var words=wordArray.words;
- var sigBytes=wordArray.sigBytes;
- var utf16Chars=[];
- for(var i=0;i<sigBytes;i+=2){
- var codePoint=swapEndian((words[i>>>2]>>>(16-(i%4)*8))&0xffff);
- utf16Chars.push(String.fromCharCode(codePoint));
- }
- return utf16Chars.join('');
- },
- parse:function(utf16Str){
- var utf16StrLength=utf16Str.length;
- var words=[];
- for(var i=0;i<utf16StrLength;i++){
- words[i>>>1]|=swapEndian(utf16Str.charCodeAt(i)<<(16-(i%2)*16));
- }
- return WordArray.create(words,utf16StrLength*2);
- }
- };
- function swapEndian(word){
- return((word<<8)&0xff00ff00)|((word>>>8)&0x00ff00ff);
- }
- }());
- (function(){
- var C=CryptoJS;
- var C_lib=C.lib;
- var WordArray=C_lib.WordArray;
- var C_enc=C.enc;
- var Base64=C_enc.Base64={
- stringify:function(wordArray){
- var words=wordArray.words;
- var sigBytes=wordArray.sigBytes;
- var map=this._map;
- wordArray.clamp();
- var base64Chars=[];
- for(var i=0;i<sigBytes;i+=3){
- var byte1=(words[i>>>2]>>>(24-(i%4)*8))&0xff;
- var byte2=(words[(i+1)>>>2]>>>(24-((i+1)%4)*8))&0xff;
- var byte3=(words[(i+2)>>>2]>>>(24-((i+2)%4)*8))&0xff;
- var triplet=(byte1<<16)|(byte2<<8)|byte3;
- for(var j=0;(j<4)&&(i+j*0.75<sigBytes);j++){
- base64Chars.push(map.charAt((triplet>>>(6*(3-j)))&0x3f));
- }
- }
- var paddingChar=map.charAt(64);
- if(paddingChar){
- while(base64Chars.length%4){
- base64Chars.push(paddingChar);
- }
- }
- return base64Chars.join('');
- },
- parse:function(base64Str){
- var base64StrLength=base64Str.length;
- var map=this._map;
- var reverseMap=this._reverseMap;
- if(!reverseMap){
- reverseMap=this._reverseMap=[];
- for(var j=0;j<map.length;j++){
- reverseMap[map.charCodeAt(j)]=j;
- }
- }
- var paddingChar=map.charAt(64);
- if(paddingChar){
- var paddingIndex=base64Str.indexOf(paddingChar);
- if(paddingIndex!==-1){
- base64StrLength=paddingIndex;
- }
- }
- return parseLoop(base64Str,base64StrLength,reverseMap);
- },
- _map:'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
- };
- function parseLoop(base64Str,base64StrLength,reverseMap){
- var words=[];
- var nBytes=0;
- for(var i=0;i<base64StrLength;i++){
- if(i%4){
- var bits1=reverseMap[base64Str.charCodeAt(i-1)]<<((i%4)*2);
- var bits2=reverseMap[base64Str.charCodeAt(i)]>>>(6-(i%4)*2);
- var bitsCombined=bits1|bits2;
- words[nBytes>>>2]|=bitsCombined<<(24-(nBytes%4)*8);
- nBytes++;
- }
- }
- return WordArray.create(words,nBytes);
- }
- }());
- (function(){
- var C=CryptoJS;
- var C_lib=C.lib;
- var WordArray=C_lib.WordArray;
- var C_enc=C.enc;
- var Base64url=C_enc.Base64url={
- stringify:function(wordArray,urlSafe=true){
- var words=wordArray.words;
- var sigBytes=wordArray.sigBytes;
- var map=urlSafe?this._safe_map:this._map;
- wordArray.clamp();
- var base64Chars=[];
- for(var i=0;i<sigBytes;i+=3){
- var byte1=(words[i>>>2]>>>(24-(i%4)*8))&0xff;
- var byte2=(words[(i+1)>>>2]>>>(24-((i+1)%4)*8))&0xff;
- var byte3=(words[(i+2)>>>2]>>>(24-((i+2)%4)*8))&0xff;
- var triplet=(byte1<<16)|(byte2<<8)|byte3;
- for(var j=0;(j<4)&&(i+j*0.75<sigBytes);j++){
- base64Chars.push(map.charAt((triplet>>>(6*(3-j)))&0x3f));
- }
- }
- var paddingChar=map.charAt(64);
- if(paddingChar){
- while(base64Chars.length%4){
- base64Chars.push(paddingChar);
- }
- }
- return base64Chars.join('');
- },
- parse:function(base64Str,urlSafe=true){
- var base64StrLength=base64Str.length;
- var map=urlSafe?this._safe_map:this._map;
- var reverseMap=this._reverseMap;
- if(!reverseMap){
- reverseMap=this._reverseMap=[];
- for(var j=0;j<map.length;j++){
- reverseMap[map.charCodeAt(j)]=j;
- }
- }
- var paddingChar=map.charAt(64);
- if(paddingChar){
- var paddingIndex=base64Str.indexOf(paddingChar);
- if(paddingIndex!==-1){
- base64StrLength=paddingIndex;
- }
- }
- return parseLoop(base64Str,base64StrLength,reverseMap);
- },
- _map:'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',
- _safe_map:'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',
- };
- function parseLoop(base64Str,base64StrLength,reverseMap){
- var words=[];
- var nBytes=0;
- for(var i=0;i<base64StrLength;i++){
- if(i%4){
- var bits1=reverseMap[base64Str.charCodeAt(i-1)]<<((i%4)*2);
- var bits2=reverseMap[base64Str.charCodeAt(i)]>>>(6-(i%4)*2);
- var bitsCombined=bits1|bits2;
- words[nBytes>>>2]|=bitsCombined<<(24-(nBytes%4)*8);
- nBytes++;
- }
- }
- return WordArray.create(words,nBytes);
- }
- }());
- (function(Math){
- var C=CryptoJS;
- var C_lib=C.lib;
- var WordArray=C_lib.WordArray;
- var Hasher=C_lib.Hasher;
- var C_algo=C.algo;
- var T=[];
- (function(){
- for(var i=0;i<64;i++){
- T[i]=(Math.abs(Math.sin(i+1))*0x100000000)|0;
- }
- }());
- var MD5=C_algo.MD5=Hasher.extend({
- _doReset:function(){
- this._hash=new WordArray.init([0x67452301,0xefcdab89,0x98badcfe,0x10325476]);
- },
- _doProcessBlock:function(M,offset){
- for(var i=0;i<16;i++){
- var offset_i=offset+i;
- var M_offset_i=M[offset_i];
- M[offset_i]=((((M_offset_i<<8)|(M_offset_i>>>24))&0x00ff00ff)|(((M_offset_i<<24)|(M_offset_i>>>8))&0xff00ff00));
- }
- var H=this._hash.words;
- var M_offset_0=M[offset+0];
- var M_offset_1=M[offset+1];
- var M_offset_2=M[offset+2];
- var M_offset_3=M[offset+3];
- var M_offset_4=M[offset+4];
- var M_offset_5=M[offset+5];
- var M_offset_6=M[offset+6];
- var M_offset_7=M[offset+7];
- var M_offset_8=M[offset+8];
- var M_offset_9=M[offset+9];
- var M_offset_10=M[offset+10];
- var M_offset_11=M[offset+11];
- var M_offset_12=M[offset+12];
- var M_offset_13=M[offset+13];
- var M_offset_14=M[offset+14];
- var M_offset_15=M[offset+15];
- var a=H[0];
- var b=H[1];
- var c=H[2];
- var d=H[3];
- a=FF(a,b,c,d,M_offset_0,7,T[0]);
- d=FF(d,a,b,c,M_offset_1,12,T[1]);
- c=FF(c,d,a,b,M_offset_2,17,T[2]);
- b=FF(b,c,d,a,M_offset_3,22,T[3]);
- a=FF(a,b,c,d,M_offset_4,7,T[4]);
- d=FF(d,a,b,c,M_offset_5,12,T[5]);
- c=FF(c,d,a,b,M_offset_6,17,T[6]);
- b=FF(b,c,d,a,M_offset_7,22,T[7]);
- a=FF(a,b,c,d,M_offset_8,7,T[8]);
- d=FF(d,a,b,c,M_offset_9,12,T[9]);
- c=FF(c,d,a,b,M_offset_10,17,T[10]);
- b=FF(b,c,d,a,M_offset_11,22,T[11]);
- a=FF(a,b,c,d,M_offset_12,7,T[12]);
- d=FF(d,a,b,c,M_offset_13,12,T[13]);
- c=FF(c,d,a,b,M_offset_14,17,T[14]);
- b=FF(b,c,d,a,M_offset_15,22,T[15]);
- a=GG(a,b,c,d,M_offset_1,5,T[16]);
- d=GG(d,a,b,c,M_offset_6,9,T[17]);
- c=GG(c,d,a,b,M_offset_11,14,T[18]);
- b=GG(b,c,d,a,M_offset_0,20,T[19]);
- a=GG(a,b,c,d,M_offset_5,5,T[20]);
- d=GG(d,a,b,c,M_offset_10,9,T[21]);
- c=GG(c,d,a,b,M_offset_15,14,T[22]);
- b=GG(b,c,d,a,M_offset_4,20,T[23]);
- a=GG(a,b,c,d,M_offset_9,5,T[24]);
- d=GG(d,a,b,c,M_offset_14,9,T[25]);
- c=GG(c,d,a,b,M_offset_3,14,T[26]);
- b=GG(b,c,d,a,M_offset_8,20,T[27]);
- a=GG(a,b,c,d,M_offset_13,5,T[28]);
- d=GG(d,a,b,c,M_offset_2,9,T[29]);
- c=GG(c,d,a,b,M_offset_7,14,T[30]);
- b=GG(b,c,d,a,M_offset_12,20,T[31]);
- a=HH(a,b,c,d,M_offset_5,4,T[32]);
- d=HH(d,a,b,c,M_offset_8,11,T[33]);
- c=HH(c,d,a,b,M_offset_11,16,T[34]);
- b=HH(b,c,d,a,M_offset_14,23,T[35]);
- a=HH(a,b,c,d,M_offset_1,4,T[36]);
- d=HH(d,a,b,c,M_offset_4,11,T[37]);
- c=HH(c,d,a,b,M_offset_7,16,T[38]);
- b=HH(b,c,d,a,M_offset_10,23,T[39]);
- a=HH(a,b,c,d,M_offset_13,4,T[40]);
- d=HH(d,a,b,c,M_offset_0,11,T[41]);
- c=HH(c,d,a,b,M_offset_3,16,T[42]);
- b=HH(b,c,d,a,M_offset_6,23,T[43]);
- a=HH(a,b,c,d,M_offset_9,4,T[44]);
- d=HH(d,a,b,c,M_offset_12,11,T[45]);
- c=HH(c,d,a,b,M_offset_15,16,T[46]);
- b=HH(b,c,d,a,M_offset_2,23,T[47]);
- a=II(a,b,c,d,M_offset_0,6,T[48]);
- d=II(d,a,b,c,M_offset_7,10,T[49]);
- c=II(c,d,a,b,M_offset_14,15,T[50]);
- b=II(b,c,d,a,M_offset_5,21,T[51]);
- a=II(a,b,c,d,M_offset_12,6,T[52]);
- d=II(d,a,b,c,M_offset_3,10,T[53]);
- c=II(c,d,a,b,M_offset_10,15,T[54]);
- b=II(b,c,d,a,M_offset_1,21,T[55]);
- a=II(a,b,c,d,M_offset_8,6,T[56]);
- d=II(d,a,b,c,M_offset_15,10,T[57]);
- c=II(c,d,a,b,M_offset_6,15,T[58]);
- b=II(b,c,d,a,M_offset_13,21,T[59]);
- a=II(a,b,c,d,M_offset_4,6,T[60]);
- d=II(d,a,b,c,M_offset_11,10,T[61]);
- c=II(c,d,a,b,M_offset_2,15,T[62]);
- b=II(b,c,d,a,M_offset_9,21,T[63]);
- H[0]=(H[0]+a)|0;
- H[1]=(H[1]+b)|0;
- H[2]=(H[2]+c)|0;
- H[3]=(H[3]+d)|0;
- },
- _doFinalize:function(){
- var data=this._data;
- var dataWords=data.words;
- var nBitsTotal=this._nDataBytes*8;
- var nBitsLeft=data.sigBytes*8;
- dataWords[nBitsLeft>>>5]|=0x80<<(24-nBitsLeft%32);
- var nBitsTotalH=Math.floor(nBitsTotal/0x100000000);
- var nBitsTotalL=nBitsTotal;
- dataWords[(((nBitsLeft+64)>>>9)<<4)+15]=((((nBitsTotalH<<8)|(nBitsTotalH>>>24))&0x00ff00ff)|(((nBitsTotalH<<24)|(nBitsTotalH>>>8))&0xff00ff00));
- dataWords[(((nBitsLeft+64)>>>9)<<4)+14]=((((nBitsTotalL<<8)|(nBitsTotalL>>>24))&0x00ff00ff)|(((nBitsTotalL<<24)|(nBitsTotalL>>>8))&0xff00ff00));
- data.sigBytes=(dataWords.length+1)*4;
- this._process();
- var hash=this._hash;
- var H=hash.words;
- for(var i=0;i<4;i++){
- var H_i=H[i];
- H[i]=(((H_i<<8)|(H_i>>>24))&0x00ff00ff)|(((H_i<<24)|(H_i>>>8))&0xff00ff00);
- }
- return hash;
- },
- clone:function(){
- var clone=Hasher.clone.call(this);
- clone._hash=this._hash.clone();
- return clone;
- }
- });
- function FF(a,b,c,d,x,s,t){
- var n=a+((b&c)|(~b&d))+x+t;
- return((n<<s)|(n>>>(32-s)))+b;
- }
- function GG(a,b,c,d,x,s,t){
- var n=a+((b&d)|(c&~d))+x+t;
- return((n<<s)|(n>>>(32-s)))+b;
- }
- function HH(a,b,c,d,x,s,t){
- var n=a+(b^c^d)+x+t;
- return((n<<s)|(n>>>(32-s)))+b;
- }
- function II(a,b,c,d,x,s,t){
- var n=a+(c^(b|~d))+x+t;
- return((n<<s)|(n>>>(32-s)))+b;
- }
- C.MD5=Hasher._createHelper(MD5);
- C.HmacMD5=Hasher._createHmacHelper(MD5);
- }(Math));
- (function(){
- var C=CryptoJS;
- var C_lib=C.lib;
- var WordArray=C_lib.WordArray;
- var Hasher=C_lib.Hasher;
- var C_algo=C.algo;
- var W=[];
- var SHA1=C_algo.SHA1=Hasher.extend({
- _doReset:function(){
- this._hash=new WordArray.init([0x67452301,0xefcdab89,0x98badcfe,0x10325476,0xc3d2e1f0]);
- },
- _doProcessBlock:function(M,offset){
- var H=this._hash.words;
- var a=H[0];
- var b=H[1];
- var c=H[2];
- var d=H[3];
- var e=H[4];
- for(var i=0;i<80;i++){
- if(i<16){
- W[i]=M[offset+i]|0;
- }else{
- var n=W[i-3]^W[i-8]^W[i-14]^W[i-16];
- W[i]=(n<<1)|(n>>>31);
- }
- var t=((a<<5)|(a>>>27))+e+W[i];
- if(i<20){
- t+=((b&c)|(~b&d))+0x5a827999;
- }else if(i<40){
- t+=(b^c^d)+0x6ed9eba1;
- }else if(i<60){
- t+=((b&c)|(b&d)|(c&d))-0x70e44324;
- }else
- {
- t+=(b^c^d)-0x359d3e2a;
- }
- e=d;
- d=c;
- c=(b<<30)|(b>>>2);
- b=a;
- a=t;
- }
- H[0]=(H[0]+a)|0;
- H[1]=(H[1]+b)|0;
- H[2]=(H[2]+c)|0;
- H[3]=(H[3]+d)|0;
- H[4]=(H[4]+e)|0;
- },
- _doFinalize:function(){
- var data=this._data;
- var dataWords=data.words;
- var nBitsTotal=this._nDataBytes*8;
- var nBitsLeft=data.sigBytes*8;
- dataWords[nBitsLeft>>>5]|=0x80<<(24-nBitsLeft%32);
- dataWords[(((nBitsLeft+64)>>>9)<<4)+14]=Math.floor(nBitsTotal/0x100000000);
- dataWords[(((nBitsLeft+64)>>>9)<<4)+15]=nBitsTotal;
- data.sigBytes=dataWords.length*4;
- this._process();
- return this._hash;
- },
- clone:function(){
- var clone=Hasher.clone.call(this);
- clone._hash=this._hash.clone();
- return clone;
- }
- });
- C.SHA1=Hasher._createHelper(SHA1);
- C.HmacSHA1=Hasher._createHmacHelper(SHA1);
- }());
- (function(Math){
- var C=CryptoJS;
- var C_lib=C.lib;
- var WordArray=C_lib.WordArray;
- var Hasher=C_lib.Hasher;
- var C_algo=C.algo;
- var H=[];
- var K=[];
- (function(){
- function isPrime(n){
- var sqrtN=Math.sqrt(n);
- for(var factor=2;factor<=sqrtN;factor++){
- if(!(n%factor)){
- return false;
- }
- }
- return true;
- }
- function getFractionalBits(n){
- return((n-(n|0))*0x100000000)|0;
- }
- var n=2;
- var nPrime=0;
- while(nPrime<64){
- if(isPrime(n)){
- if(nPrime<8){
- H[nPrime]=getFractionalBits(Math.pow(n,1/2));
- }
- K[nPrime]=getFractionalBits(Math.pow(n,1/3));
- nPrime++;
- }
- n++;
- }
- }());
- var W=[];
- var SHA256=C_algo.SHA256=Hasher.extend({
- _doReset:function(){
- this._hash=new WordArray.init(H.slice(0));
- },
- _doProcessBlock:function(M,offset){
- var H=this._hash.words;
- var a=H[0];
- var b=H[1];
- var c=H[2];
- var d=H[3];
- var e=H[4];
- var f=H[5];
- var g=H[6];
- var h=H[7];
- for(var i=0;i<64;i++){
- if(i<16){
- W[i]=M[offset+i]|0;
- }else{
- var gamma0x=W[i-15];
- var gamma0=((gamma0x<<25)|(gamma0x>>>7))^((gamma0x<<14)|(gamma0x>>>18))^(gamma0x>>>3);
- var gamma1x=W[i-2];
- var gamma1=((gamma1x<<15)|(gamma1x>>>17))^((gamma1x<<13)|(gamma1x>>>19))^(gamma1x>>>10);
- W[i]=gamma0+W[i-7]+gamma1+W[i-16];
- }
- var ch=(e&f)^(~e&g);
- var maj=(a&b)^(a&c)^(b&c);
- var sigma0=((a<<30)|(a>>>2))^((a<<19)|(a>>>13))^((a<<10)|(a>>>22));
- var sigma1=((e<<26)|(e>>>6))^((e<<21)|(e>>>11))^((e<<7)|(e>>>25));
- var t1=h+sigma1+ch+K[i]+W[i];
- var t2=sigma0+maj;
- h=g;
- g=f;
- f=e;
- e=(d+t1)|0;
- d=c;
- c=b;
- b=a;
- a=(t1+t2)|0;
- }
- H[0]=(H[0]+a)|0;
- H[1]=(H[1]+b)|0;
- H[2]=(H[2]+c)|0;
- H[3]=(H[3]+d)|0;
- H[4]=(H[4]+e)|0;
- H[5]=(H[5]+f)|0;
- H[6]=(H[6]+g)|0;
- H[7]=(H[7]+h)|0;
- },
- _doFinalize:function(){
- var data=this._data;
- var dataWords=data.words;
- var nBitsTotal=this._nDataBytes*8;
- var nBitsLeft=data.sigBytes*8;
- dataWords[nBitsLeft>>>5]|=0x80<<(24-nBitsLeft%32);
- dataWords[(((nBitsLeft+64)>>>9)<<4)+14]=Math.floor(nBitsTotal/0x100000000);
- dataWords[(((nBitsLeft+64)>>>9)<<4)+15]=nBitsTotal;
- data.sigBytes=dataWords.length*4;
- this._process();
- return this._hash;
- },
- clone:function(){
- var clone=Hasher.clone.call(this);
- clone._hash=this._hash.clone();
- return clone;
- }
- });
- C.SHA256=Hasher._createHelper(SHA256);
- C.HmacSHA256=Hasher._createHmacHelper(SHA256);
- }(Math));
- (function(){
- var C=CryptoJS;
- var C_lib=C.lib;
- var WordArray=C_lib.WordArray;
- var C_algo=C.algo;
- var SHA256=C_algo.SHA256;
- var SHA224=C_algo.SHA224=SHA256.extend({
- _doReset:function(){
- this._hash=new WordArray.init([0xc1059ed8,0x367cd507,0x3070dd17,0xf70e5939,0xffc00b31,0x68581511,0x64f98fa7,0xbefa4fa4]);
- },
- _doFinalize:function(){
- var hash=SHA256._doFinalize.call(this);
- hash.sigBytes-=4;
- return hash;
- }
- });
- C.SHA224=SHA256._createHelper(SHA224);
- C.HmacSHA224=SHA256._createHmacHelper(SHA224);
- }());
- (function(){
- var C=CryptoJS;
- var C_lib=C.lib;
- var Hasher=C_lib.Hasher;
- var C_x64=C.x64;
- var X64Word=C_x64.Word;
- var X64WordArray=C_x64.WordArray;
- var C_algo=C.algo;
- function X64Word_create(){
- return X64Word.create.apply(X64Word,arguments);
- }
- var K=[X64Word_create(0x428a2f98,0xd728ae22),X64Word_create(0x71374491,0x23ef65cd),X64Word_create(0xb5c0fbcf,0xec4d3b2f),X64Word_create(0xe9b5dba5,0x8189dbbc),X64Word_create(0x3956c25b,0xf348b538),X64Word_create(0x59f111f1,0xb605d019),X64Word_create(0x923f82a4,0xaf194f9b),X64Word_create(0xab1c5ed5,0xda6d8118),X64Word_create(0xd807aa98,0xa3030242),X64Word_create(0x12835b01,0x45706fbe),X64Word_create(0x243185be,0x4ee4b28c),X64Word_create(0x550c7dc3,0xd5ffb4e2),X64Word_create(0x72be5d74,0xf27b896f),X64Word_create(0x80deb1fe,0x3b1696b1),X64Word_create(0x9bdc06a7,0x25c71235),X64Word_create(0xc19bf174,0xcf692694),X64Word_create(0xe49b69c1,0x9ef14ad2),X64Word_create(0xefbe4786,0x384f25e3),X64Word_create(0x0fc19dc6,0x8b8cd5b5),X64Word_create(0x240ca1cc,0x77ac9c65),X64Word_create(0x2de92c6f,0x592b0275),X64Word_create(0x4a7484aa,0x6ea6e483),X64Word_create(0x5cb0a9dc,0xbd41fbd4),X64Word_create(0x76f988da,0x831153b5),X64Word_create(0x983e5152,0xee66dfab),X64Word_create(0xa831c66d,0x2db43210),X64Word_create(0xb00327c8,0x98fb213f),X64Word_create(0xbf597fc7,0xbeef0ee4),X64Word_create(0xc6e00bf3,0x3da88fc2),X64Word_create(0xd5a79147,0x930aa725),X64Word_create(0x06ca6351,0xe003826f),X64Word_create(0x14292967,0x0a0e6e70),X64Word_create(0x27b70a85,0x46d22ffc),X64Word_create(0x2e1b2138,0x5c26c926),X64Word_create(0x4d2c6dfc,0x5ac42aed),X64Word_create(0x53380d13,0x9d95b3df),X64Word_create(0x650a7354,0x8baf63de),X64Word_create(0x766a0abb,0x3c77b2a8),X64Word_create(0x81c2c92e,0x47edaee6),X64Word_create(0x92722c85,0x1482353b),X64Word_create(0xa2bfe8a1,0x4cf10364),X64Word_create(0xa81a664b,0xbc423001),X64Word_create(0xc24b8b70,0xd0f89791),X64Word_create(0xc76c51a3,0x0654be30),X64Word_create(0xd192e819,0xd6ef5218),X64Word_create(0xd6990624,0x5565a910),X64Word_create(0xf40e3585,0x5771202a),X64Word_create(0x106aa070,0x32bbd1b8),X64Word_create(0x19a4c116,0xb8d2d0c8),X64Word_create(0x1e376c08,0x5141ab53),X64Word_create(0x2748774c,0xdf8eeb99),X64Word_create(0x34b0bcb5,0xe19b48a8),X64Word_create(0x391c0cb3,0xc5c95a63),X64Word_create(0x4ed8aa4a,0xe3418acb),X64Word_create(0x5b9cca4f,0x7763e373),X64Word_create(0x682e6ff3,0xd6b2b8a3),X64Word_create(0x748f82ee,0x5defb2fc),X64Word_create(0x78a5636f,0x43172f60),X64Word_create(0x84c87814,0xa1f0ab72),X64Word_create(0x8cc70208,0x1a6439ec),X64Word_create(0x90befffa,0x23631e28),X64Word_create(0xa4506ceb,0xde82bde9),X64Word_create(0xbef9a3f7,0xb2c67915),X64Word_create(0xc67178f2,0xe372532b),X64Word_create(0xca273ece,0xea26619c),X64Word_create(0xd186b8c7,0x21c0c207),X64Word_create(0xeada7dd6,0xcde0eb1e),X64Word_create(0xf57d4f7f,0xee6ed178),X64Word_create(0x06f067aa,0x72176fba),X64Word_create(0x0a637dc5,0xa2c898a6),X64Word_create(0x113f9804,0xbef90dae),X64Word_create(0x1b710b35,0x131c471b),X64Word_create(0x28db77f5,0x23047d84),X64Word_create(0x32caab7b,0x40c72493),X64Word_create(0x3c9ebe0a,0x15c9bebc),X64Word_create(0x431d67c4,0x9c100d4c),X64Word_create(0x4cc5d4be,0xcb3e42b6),X64Word_create(0x597f299c,0xfc657e2a),X64Word_create(0x5fcb6fab,0x3ad6faec),X64Word_create(0x6c44198c,0x4a475817)];
- var W=[];(function(){
- for(var i=0;i<80;i++){
- W[i]=X64Word_create();
- }
- }());
- var SHA512=C_algo.SHA512=Hasher.extend({
- _doReset:function(){
- this._hash=new X64WordArray.init([new X64Word.init(0x6a09e667,0xf3bcc908),new X64Word.init(0xbb67ae85,0x84caa73b),new X64Word.init(0x3c6ef372,0xfe94f82b),new X64Word.init(0xa54ff53a,0x5f1d36f1),new X64Word.init(0x510e527f,0xade682d1),new X64Word.init(0x9b05688c,0x2b3e6c1f),new X64Word.init(0x1f83d9ab,0xfb41bd6b),new X64Word.init(0x5be0cd19,0x137e2179)]);
- },
- _doProcessBlock:function(M,offset){
- var H=this._hash.words;
- var H0=H[0];
- var H1=H[1];
- var H2=H[2];
- var H3=H[3];
- var H4=H[4];
- var H5=H[5];
- var H6=H[6];
- var H7=H[7];
- var H0h=H0.high;
- var H0l=H0.low;
- var H1h=H1.high;
- var H1l=H1.low;
- var H2h=H2.high;
- var H2l=H2.low;
- var H3h=H3.high;
- var H3l=H3.low;
- var H4h=H4.high;
- var H4l=H4.low;
- var H5h=H5.high;
- var H5l=H5.low;
- var H6h=H6.high;
- var H6l=H6.low;
- var H7h=H7.high;
- var H7l=H7.low;
- var ah=H0h;
- var al=H0l;
- var bh=H1h;
- var bl=H1l;
- var ch=H2h;
- var cl=H2l;
- var dh=H3h;
- var dl=H3l;
- var eh=H4h;
- var el=H4l;
- var fh=H5h;
- var fl=H5l;
- var gh=H6h;
- var gl=H6l;
- var hh=H7h;
- var hl=H7l;
- for(var i=0;i<80;i++){
- var Wil;
- var Wih;
- var Wi=W[i];
- if(i<16){
- Wih=Wi.high=M[offset+i*2]|0;
- Wil=Wi.low=M[offset+i*2+1]|0;
- }else{
- var gamma0x=W[i-15];
- var gamma0xh=gamma0x.high;
- var gamma0xl=gamma0x.low;
- var gamma0h=((gamma0xh>>>1)|(gamma0xl<<31))^((gamma0xh>>>8)|(gamma0xl<<24))^(gamma0xh>>>7);
- var gamma0l=((gamma0xl>>>1)|(gamma0xh<<31))^((gamma0xl>>>8)|(gamma0xh<<24))^((gamma0xl>>>7)|(gamma0xh<<25));
- var gamma1x=W[i-2];
- var gamma1xh=gamma1x.high;
- var gamma1xl=gamma1x.low;
- var gamma1h=((gamma1xh>>>19)|(gamma1xl<<13))^((gamma1xh<<3)|(gamma1xl>>>29))^(gamma1xh>>>6);
- var gamma1l=((gamma1xl>>>19)|(gamma1xh<<13))^((gamma1xl<<3)|(gamma1xh>>>29))^((gamma1xl>>>6)|(gamma1xh<<26));
- var Wi7=W[i-7];
- var Wi7h=Wi7.high;
- var Wi7l=Wi7.low;
- var Wi16=W[i-16];
- var Wi16h=Wi16.high;
- var Wi16l=Wi16.low;
- Wil=gamma0l+Wi7l;
- Wih=gamma0h+Wi7h+((Wil>>>0)<(gamma0l>>>0)?1:0);
- Wil=Wil+gamma1l;
- Wih=Wih+gamma1h+((Wil>>>0)<(gamma1l>>>0)?1:0);
- Wil=Wil+Wi16l;
- Wih=Wih+Wi16h+((Wil>>>0)<(Wi16l>>>0)?1:0);
- Wi.high=Wih;
- Wi.low=Wil;
- }
- var chh=(eh&fh)^(~eh&gh);
- var chl=(el&fl)^(~el&gl);
- var majh=(ah&bh)^(ah&ch)^(bh&ch);
- var majl=(al&bl)^(al&cl)^(bl&cl);
- var sigma0h=((ah>>>28)|(al<<4))^((ah<<30)|(al>>>2))^((ah<<25)|(al>>>7));
- var sigma0l=((al>>>28)|(ah<<4))^((al<<30)|(ah>>>2))^((al<<25)|(ah>>>7));
- var sigma1h=((eh>>>14)|(el<<18))^((eh>>>18)|(el<<14))^((eh<<23)|(el>>>9));
- var sigma1l=((el>>>14)|(eh<<18))^((el>>>18)|(eh<<14))^((el<<23)|(eh>>>9));
- var Ki=K[i];
- var Kih=Ki.high;
- var Kil=Ki.low;
- var t1l=hl+sigma1l;
- var t1h=hh+sigma1h+((t1l>>>0)<(hl>>>0)?1:0);
- var t1l=t1l+chl;
- var t1h=t1h+chh+((t1l>>>0)<(chl>>>0)?1:0);
- var t1l=t1l+Kil;
- var t1h=t1h+Kih+((t1l>>>0)<(Kil>>>0)?1:0);
- var t1l=t1l+Wil;
- var t1h=t1h+Wih+((t1l>>>0)<(Wil>>>0)?1:0);
- var t2l=sigma0l+majl;
- var t2h=sigma0h+majh+((t2l>>>0)<(sigma0l>>>0)?1:0);
- hh=gh;
- hl=gl;
- gh=fh;
- gl=fl;
- fh=eh;
- fl=el;
- el=(dl+t1l)|0;
- eh=(dh+t1h+((el>>>0)<(dl>>>0)?1:0))|0;
- dh=ch;
- dl=cl;
- ch=bh;
- cl=bl;
- bh=ah;
- bl=al;
- al=(t1l+t2l)|0;
- ah=(t1h+t2h+((al>>>0)<(t1l>>>0)?1:0))|0;
- }
- H0l=H0.low=(H0l+al);
- H0.high=(H0h+ah+((H0l>>>0)<(al>>>0)?1:0));
- H1l=H1.low=(H1l+bl);
- H1.high=(H1h+bh+((H1l>>>0)<(bl>>>0)?1:0));
- H2l=H2.low=(H2l+cl);
- H2.high=(H2h+ch+((H2l>>>0)<(cl>>>0)?1:0));
- H3l=H3.low=(H3l+dl);
- H3.high=(H3h+dh+((H3l>>>0)<(dl>>>0)?1:0));
- H4l=H4.low=(H4l+el);
- H4.high=(H4h+eh+((H4l>>>0)<(el>>>0)?1:0));
- H5l=H5.low=(H5l+fl);
- H5.high=(H5h+fh+((H5l>>>0)<(fl>>>0)?1:0));
- H6l=H6.low=(H6l+gl);
- H6.high=(H6h+gh+((H6l>>>0)<(gl>>>0)?1:0));
- H7l=H7.low=(H7l+hl);
- H7.high=(H7h+hh+((H7l>>>0)<(hl>>>0)?1:0));
- },
- _doFinalize:function(){
- var data=this._data;
- var dataWords=data.words;
- var nBitsTotal=this._nDataBytes*8;
- var nBitsLeft=data.sigBytes*8;
- dataWords[nBitsLeft>>>5]|=0x80<<(24-nBitsLeft%32);
- dataWords[(((nBitsLeft+128)>>>10)<<5)+30]=Math.floor(nBitsTotal/0x100000000);
- dataWords[(((nBitsLeft+128)>>>10)<<5)+31]=nBitsTotal;
- data.sigBytes=dataWords.length*4;
- this._process();
- var hash=this._hash.toX32();
- return hash;
- },
- clone:function(){
- var clone=Hasher.clone.call(this);
- clone._hash=this._hash.clone();
- return clone;
- },
- blockSize:1024/32
- });
- C.SHA512=Hasher._createHelper(SHA512);
- C.HmacSHA512=Hasher._createHmacHelper(SHA512);
- }());
- (function(){
- var C=CryptoJS;
- var C_x64=C.x64;
- var X64Word=C_x64.Word;
- var X64WordArray=C_x64.WordArray;
- var C_algo=C.algo;
- var SHA512=C_algo.SHA512;
- var SHA384=C_algo.SHA384=SHA512.extend({
- _doReset:function(){
- this._hash=new X64WordArray.init([new X64Word.init(0xcbbb9d5d,0xc1059ed8),new X64Word.init(0x629a292a,0x367cd507),new X64Word.init(0x9159015a,0x3070dd17),new X64Word.init(0x152fecd8,0xf70e5939),new X64Word.init(0x67332667,0xffc00b31),new X64Word.init(0x8eb44a87,0x68581511),new X64Word.init(0xdb0c2e0d,0x64f98fa7),new X64Word.init(0x47b5481d,0xbefa4fa4)]);
- },
- _doFinalize:function(){
- var hash=SHA512._doFinalize.call(this);
- hash.sigBytes-=16;
- return hash;
- }
- });
- C.SHA384=SHA512._createHelper(SHA384);
- C.HmacSHA384=SHA512._createHmacHelper(SHA384);
- }());
- (function(Math){
- var C=CryptoJS;
- var C_lib=C.lib;
- var WordArray=C_lib.WordArray;
- var Hasher=C_lib.Hasher;
- var C_x64=C.x64;
- var X64Word=C_x64.Word;
- var C_algo=C.algo;
- var RHO_OFFSETS=[];
- var PI_INDEXES=[];
- var ROUND_CONSTANTS=[];
- (function(){
- var x=1,
- y=0;
- for(var t=0;t<24;t++){
- RHO_OFFSETS[x+5*y]=((t+1)*(t+2)/2)%64;
- var newX=y%5;
- var newY=(2*x+3*y)%5;
- x=newX;
- y=newY;
- }
- for(var x=0;x<5;x++){
- for(var y=0;y<5;y++){
- PI_INDEXES[x+5*y]=y+((2*x+3*y)%5)*5;
- }
- }
- var LFSR=0x01;
- for(var i=0;i<24;i++){
- var roundConstantMsw=0;
- var roundConstantLsw=0;
- for(var j=0;j<7;j++){
- if(LFSR&0x01){
- var bitPosition=(1<<j)-1;
- if(bitPosition<32){
- roundConstantLsw^=1<<bitPosition;
- }else
- {
- roundConstantMsw^=1<<(bitPosition-32);
- }
- }
- if(LFSR&0x80){
- LFSR=(LFSR<<1)^0x71;
- }else{
- LFSR<<=1;
- }
- }
- ROUND_CONSTANTS[i]=X64Word.create(roundConstantMsw,roundConstantLsw);
- }
- }());
- var T=[];(function(){
- for(var i=0;i<25;i++){
- T[i]=X64Word.create();
- }
- }());
- var SHA3=C_algo.SHA3=Hasher.extend({
- cfg:Hasher.cfg.extend({
- outputLength:512
- }),
- _doReset:function(){
- var state=this._state=[]
- for(var i=0;i<25;i++){
- state[i]=new X64Word.init();
- }
- this.blockSize=(1600-2*this.cfg.outputLength)/32;
- },
- _doProcessBlock:function(M,offset){
- var state=this._state;
- var nBlockSizeLanes=this.blockSize/2;
- for(var i=0;i<nBlockSizeLanes;i++){
- var M2i=M[offset+2*i];
- var M2i1=M[offset+2*i+1];
- M2i=((((M2i<<8)|(M2i>>>24))&0x00ff00ff)|(((M2i<<24)|(M2i>>>8))&0xff00ff00));
- M2i1=((((M2i1<<8)|(M2i1>>>24))&0x00ff00ff)|(((M2i1<<24)|(M2i1>>>8))&0xff00ff00));
- var lane=state[i];
- lane.high^=M2i1;
- lane.low^=M2i;
- }
- for(var round=0;round<24;round++){
- for(var x=0;x<5;x++){
- var tMsw=0,
- tLsw=0;
- for(var y=0;y<5;y++){
- var lane=state[x+5*y];
- tMsw^=lane.high;
- tLsw^=lane.low;
- }
- var Tx=T[x];
- Tx.high=tMsw;
- Tx.low=tLsw;
- }
- for(var x=0;x<5;x++){
- var Tx4=T[(x+4)%5];
- var Tx1=T[(x+1)%5];
- var Tx1Msw=Tx1.high;
- var Tx1Lsw=Tx1.low;
- var tMsw=Tx4.high^((Tx1Msw<<1)|(Tx1Lsw>>>31));
- var tLsw=Tx4.low^((Tx1Lsw<<1)|(Tx1Msw>>>31));
- for(var y=0;y<5;y++){
- var lane=state[x+5*y];
- lane.high^=tMsw;
- lane.low^=tLsw;
- }
- }
- for(var laneIndex=1;laneIndex<25;laneIndex++){
- var tMsw;
- var tLsw;
- var lane=state[laneIndex];
- var laneMsw=lane.high;
- var laneLsw=lane.low;
- var rhoOffset=RHO_OFFSETS[laneIndex];
- if(rhoOffset<32){
- tMsw=(laneMsw<<rhoOffset)|(laneLsw>>>(32-rhoOffset));
- tLsw=(laneLsw<<rhoOffset)|(laneMsw>>>(32-rhoOffset));
- }else
- {
- tMsw=(laneLsw<<(rhoOffset-32))|(laneMsw>>>(64-rhoOffset));
- tLsw=(laneMsw<<(rhoOffset-32))|(laneLsw>>>(64-rhoOffset));
- }
- var TPiLane=T[PI_INDEXES[laneIndex]];
- TPiLane.high=tMsw;
- TPiLane.low=tLsw;
- }
- var T0=T[0];
- var state0=state[0];
- T0.high=state0.high;
- T0.low=state0.low;
- for(var x=0;x<5;x++){
- for(var y=0;y<5;y++){
- var laneIndex=x+5*y;
- var lane=state[laneIndex];
- var TLane=T[laneIndex];
- var Tx1Lane=T[((x+1)%5)+5*y];
- var Tx2Lane=T[((x+2)%5)+5*y];
- lane.high=TLane.high^(~Tx1Lane.high&Tx2Lane.high);
- lane.low=TLane.low^(~Tx1Lane.low&Tx2Lane.low);
- }
- }
- var lane=state[0];
- var roundConstant=ROUND_CONSTANTS[round];
- lane.high^=roundConstant.high;
- lane.low^=roundConstant.low;
- }
- },
- _doFinalize:function(){
- var data=this._data;
- var dataWords=data.words;
- var nBitsTotal=this._nDataBytes*8;
- var nBitsLeft=data.sigBytes*8;
- var blockSizeBits=this.blockSize*32;
- dataWords[nBitsLeft>>>5]|=0x1<<(24-nBitsLeft%32);
- dataWords[((Math.ceil((nBitsLeft+1)/blockSizeBits)*blockSizeBits)>>>5)-1]|=0x80;
- data.sigBytes=dataWords.length*4;
- this._process();
- var state=this._state;
- var outputLengthBytes=this.cfg.outputLength/8;
- var outputLengthLanes=outputLengthBytes/8;
- var hashWords=[];
- for(var i=0;i<outputLengthLanes;i++){
- var lane=state[i];
- var laneMsw=lane.high;
- var laneLsw=lane.low;
- laneMsw=((((laneMsw<<8)|(laneMsw>>>24))&0x00ff00ff)|(((laneMsw<<24)|(laneMsw>>>8))&0xff00ff00));
- laneLsw=((((laneLsw<<8)|(laneLsw>>>24))&0x00ff00ff)|(((laneLsw<<24)|(laneLsw>>>8))&0xff00ff00));
- hashWords.push(laneLsw);
- hashWords.push(laneMsw);
- }
- return new WordArray.init(hashWords,outputLengthBytes);
- },
- clone:function(){
- var clone=Hasher.clone.call(this);
- var state=clone._state=this._state.slice(0);
- for(var i=0;i<25;i++){
- state[i]=state[i].clone();
- }
- return clone;
- }
- });
- C.SHA3=Hasher._createHelper(SHA3);
- C.HmacSHA3=Hasher._createHmacHelper(SHA3);
- }(Math));
- (function(Math){
- var C=CryptoJS;
- var C_lib=C.lib;
- var WordArray=C_lib.WordArray;
- var Hasher=C_lib.Hasher;
- var C_algo=C.algo;
- var _zl=WordArray.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]);
- var _zr=WordArray.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]);
- var _sl=WordArray.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]);
- var _sr=WordArray.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]);
- var _hl=WordArray.create([0x00000000,0x5A827999,0x6ED9EBA1,0x8F1BBCDC,0xA953FD4E]);
- var _hr=WordArray.create([0x50A28BE6,0x5C4DD124,0x6D703EF3,0x7A6D76E9,0x00000000]);
- var RIPEMD160=C_algo.RIPEMD160=Hasher.extend({
- _doReset:function(){
- this._hash=WordArray.create([0x67452301,0xEFCDAB89,0x98BADCFE,0x10325476,0xC3D2E1F0]);
- },
- _doProcessBlock:function(M,offset){
- for(var i=0;i<16;i++){
- var offset_i=offset+i;
- var M_offset_i=M[offset_i];
- M[offset_i]=((((M_offset_i<<8)|(M_offset_i>>>24))&0x00ff00ff)|(((M_offset_i<<24)|(M_offset_i>>>8))&0xff00ff00));
- }
- var H=this._hash.words;
- var hl=_hl.words;
- var hr=_hr.words;
- var zl=_zl.words;
- var zr=_zr.words;
- var sl=_sl.words;
- var sr=_sr.words;
- var al,bl,cl,dl,el;
- var ar,br,cr,dr,er;
- ar=al=H[0];
- br=bl=H[1];
- cr=cl=H[2];
- dr=dl=H[3];
- er=el=H[4];
- var t;
- for(var i=0;i<80;i+=1){
- t=(al+M[offset+zl[i]])|0;
- if(i<16){
- t+=f1(bl,cl,dl)+hl[0];
- }else if(i<32){
- t+=f2(bl,cl,dl)+hl[1];
- }else if(i<48){
- t+=f3(bl,cl,dl)+hl[2];
- }else if(i<64){
- t+=f4(bl,cl,dl)+hl[3];
- }else{
- t+=f5(bl,cl,dl)+hl[4];
- }
- t=t|0;
- t=rotl(t,sl[i]);
- t=(t+el)|0;
- al=el;
- el=dl;
- dl=rotl(cl,10);
- cl=bl;
- bl=t;
- t=(ar+M[offset+zr[i]])|0;
- if(i<16){
- t+=f5(br,cr,dr)+hr[0];
- }else if(i<32){
- t+=f4(br,cr,dr)+hr[1];
- }else if(i<48){
- t+=f3(br,cr,dr)+hr[2];
- }else if(i<64){
- t+=f2(br,cr,dr)+hr[3];
- }else{
- t+=f1(br,cr,dr)+hr[4];
- }
- t=t|0;
- t=rotl(t,sr[i]);
- t=(t+er)|0;
- ar=er;
- er=dr;
- dr=rotl(cr,10);
- cr=br;
- br=t;
- }
- t=(H[1]+cl+dr)|0;
- H[1]=(H[2]+dl+er)|0;
- H[2]=(H[3]+el+ar)|0;
- H[3]=(H[4]+al+br)|0;
- H[4]=(H[0]+bl+cr)|0;
- H[0]=t;
- },
- _doFinalize:function(){
- var data=this._data;
- var dataWords=data.words;
- var nBitsTotal=this._nDataBytes*8;
- var nBitsLeft=data.sigBytes*8;
- dataWords[nBitsLeft>>>5]|=0x80<<(24-nBitsLeft%32);
- dataWords[(((nBitsLeft+64)>>>9)<<4)+14]=((((nBitsTotal<<8)|(nBitsTotal>>>24))&0x00ff00ff)|(((nBitsTotal<<24)|(nBitsTotal>>>8))&0xff00ff00));
- data.sigBytes=(dataWords.length+1)*4;
- this._process();
- var hash=this._hash;
- var H=hash.words;
- for(var i=0;i<5;i++){
- var H_i=H[i];
- H[i]=(((H_i<<8)|(H_i>>>24))&0x00ff00ff)|(((H_i<<24)|(H_i>>>8))&0xff00ff00);
- }
- return hash;
- },
- clone:function(){
- var clone=Hasher.clone.call(this);
- clone._hash=this._hash.clone();
- return clone;
- }
- });
- function f1(x,y,z){
- return((x)^(y)^(z));
- }
- function f2(x,y,z){
- return(((x)&(y))|((~x)&(z)));
- }
- function f3(x,y,z){
- return(((x)|(~(y)))^(z));
- }
- function f4(x,y,z){
- return(((x)&(z))|((y)&(~(z))));
- }
- function f5(x,y,z){
- return((x)^((y)|(~(z))));
- }
- function rotl(x,n){
- return(x<<n)|(x>>>(32-n));
- }
- C.RIPEMD160=Hasher._createHelper(RIPEMD160);
- C.HmacRIPEMD160=Hasher._createHmacHelper(RIPEMD160);
- }(Math));
- (function(){
- var C=CryptoJS;
- var C_lib=C.lib;
- var Base=C_lib.Base;
- var C_enc=C.enc;
- var Utf8=C_enc.Utf8;
- var C_algo=C.algo;
- var HMAC=C_algo.HMAC=Base.extend({
- init:function(hasher,key){
- hasher=this._hasher=new hasher.init();
- if(typeof key=='string'){
- key=Utf8.parse(key);
- }
- var hasherBlockSize=hasher.blockSize;
- var hasherBlockSizeBytes=hasherBlockSize*4;
- if(key.sigBytes>hasherBlockSizeBytes){
- key=hasher.finalize(key);
- }
- key.clamp();
- var oKey=this._oKey=key.clone();
- var iKey=this._iKey=key.clone();
- var oKeyWords=oKey.words;
- var iKeyWords=iKey.words;
- for(var i=0;i<hasherBlockSize;i++){
- oKeyWords[i]^=0x5c5c5c5c;
- iKeyWords[i]^=0x36363636;
- }
- oKey.sigBytes=iKey.sigBytes=hasherBlockSizeBytes;
- this.reset();
- },
- reset:function(){
- var hasher=this._hasher;
- hasher.reset();
- hasher.update(this._iKey);
- },
- update:function(messageUpdate){
- this._hasher.update(messageUpdate);
- return this;
- },
- finalize:function(messageUpdate){
- var hasher=this._hasher;
- var innerHash=hasher.finalize(messageUpdate);
- hasher.reset();
- var hmac=hasher.finalize(this._oKey.clone().concat(innerHash));
- return hmac;
- }
- });
- }());
- (function(){
- var C=CryptoJS;
- var C_lib=C.lib;
- var Base=C_lib.Base;
- var WordArray=C_lib.WordArray;
- var C_algo=C.algo;
- var SHA1=C_algo.SHA1;
- var HMAC=C_algo.HMAC;
- var PBKDF2=C_algo.PBKDF2=Base.extend({
- cfg:Base.extend({
- keySize:128/32,
- hasher:SHA1,
- iterations:1
- }),
- init:function(cfg){
- this.cfg=this.cfg.extend(cfg);
- },
- compute:function(password,salt){
- var cfg=this.cfg;
- var hmac=HMAC.create(cfg.hasher,password);
- var derivedKey=WordArray.create();
- var blockIndex=WordArray.create([0x00000001]);
- var derivedKeyWords=derivedKey.words;
- var blockIndexWords=blockIndex.words;
- var keySize=cfg.keySize;
- var iterations=cfg.iterations;
- while(derivedKeyWords.length<keySize){
- var block=hmac.update(salt).finalize(blockIndex);
- hmac.reset();
- var blockWords=block.words;
- var blockWordsLength=blockWords.length;
- var intermediate=block;
- for(var i=1;i<iterations;i++){
- intermediate=hmac.finalize(intermediate);
- hmac.reset();
- var intermediateWords=intermediate.words;
- for(var j=0;j<blockWordsLength;j++){
- blockWords[j]^=intermediateWords[j];
- }
- }
- derivedKey.concat(block);
- blockIndexWords[0]++;
- }
- derivedKey.sigBytes=keySize*4;
- return derivedKey;
- }
- });
- C.PBKDF2=function(password,salt,cfg){
- return PBKDF2.create(cfg).compute(password,salt);
- };
- }());
- (function(){
- var C=CryptoJS;
- var C_lib=C.lib;
- var Base=C_lib.Base;
- var WordArray=C_lib.WordArray;
- var C_algo=C.algo;
- var MD5=C_algo.MD5;
- var EvpKDF=C_algo.EvpKDF=Base.extend({
- cfg:Base.extend({
- keySize:128/32,
- hasher:MD5,
- iterations:1
- }),
- init:function(cfg){
- this.cfg=this.cfg.extend(cfg);
- },
- compute:function(password,salt){
- var block;
- var cfg=this.cfg;
- var hasher=cfg.hasher.create();
- var derivedKey=WordArray.create();
- var derivedKeyWords=derivedKey.words;
- var keySize=cfg.keySize;
- var iterations=cfg.iterations;
- while(derivedKeyWords.length<keySize){
- if(block){
- hasher.update(block);
- }
- block=hasher.update(password).finalize(salt);
- hasher.reset();
- for(var i=1;i<iterations;i++){
- block=hasher.finalize(block);
- hasher.reset();
- }
- derivedKey.concat(block);
- }
- derivedKey.sigBytes=keySize*4;
- return derivedKey;
- }
- });
- C.EvpKDF=function(password,salt,cfg){
- return EvpKDF.create(cfg).compute(password,salt);
- };
- }());
- CryptoJS.lib.Cipher||(function(undefined){
- var C=CryptoJS;
- var C_lib=C.lib;
- var Base=C_lib.Base;
- var WordArray=C_lib.WordArray;
- var BufferedBlockAlgorithm=C_lib.BufferedBlockAlgorithm;
- var C_enc=C.enc;
- var Utf8=C_enc.Utf8;
- var Base64=C_enc.Base64;
- var C_algo=C.algo;
- var EvpKDF=C_algo.EvpKDF;
- var Cipher=C_lib.Cipher=BufferedBlockAlgorithm.extend({
- cfg:Base.extend(),
- createEncryptor:function(key,cfg){
- return this.create(this._ENC_XFORM_MODE,key,cfg);
- },
- createDecryptor:function(key,cfg){
- return this.create(this._DEC_XFORM_MODE,key,cfg);
- },
- init:function(xformMode,key,cfg){
- this.cfg=this.cfg.extend(cfg);
- this._xformMode=xformMode;
- this._key=key;
- this.reset();
- },
- reset:function(){
- BufferedBlockAlgorithm.reset.call(this);
- this._doReset();
- },
- process:function(dataUpdate){
- this._append(dataUpdate);
- return this._process();
- },
- finalize:function(dataUpdate){
- if(dataUpdate){
- this._append(dataUpdate);
- }
- var finalProcessedData=this._doFinalize();
- return finalProcessedData;
- },
- keySize:128/32,
- ivSize:128/32,
- _ENC_XFORM_MODE:1,
- _DEC_XFORM_MODE:2,
- _createHelper:(function(){
- function selectCipherStrategy(key){
- if(typeof key=='string'){
- return PasswordBasedCipher;
- }else{
- return SerializableCipher;
- }
- }
- return function(cipher){
- return{
- encrypt:function(message,key,cfg){
- return selectCipherStrategy(key).encrypt(cipher,message,key,cfg);
- },
- decrypt:function(ciphertext,key,cfg){
- return selectCipherStrategy(key).decrypt(cipher,ciphertext,key,cfg);
- }
- };
- };
- }())
- });
- var StreamCipher=C_lib.StreamCipher=Cipher.extend({
- _doFinalize:function(){
- var finalProcessedBlocks=this._process(!!'flush');
- return finalProcessedBlocks;
- },
- blockSize:1
- });
- var C_mode=C.mode={};
- var BlockCipherMode=C_lib.BlockCipherMode=Base.extend({
- createEncryptor:function(cipher,iv){
- return this.Encryptor.create(cipher,iv);
- },
- createDecryptor:function(cipher,iv){
- return this.Decryptor.create(cipher,iv);
- },
- init:function(cipher,iv){
- this._cipher=cipher;
- this._iv=iv;
- }
- });
- var CBC=C_mode.CBC=(function(){
- var CBC=BlockCipherMode.extend();
- CBC.Encryptor=CBC.extend({
- processBlock:function(words,offset){
- var cipher=this._cipher;
- var blockSize=cipher.blockSize;
- xorBlock.call(this,words,offset,blockSize);
- cipher.encryptBlock(words,offset);
- this._prevBlock=words.slice(offset,offset+blockSize);
- }
- });
- CBC.Decryptor=CBC.extend({
- processBlock:function(words,offset){
- var cipher=this._cipher;
- var blockSize=cipher.blockSize;
- var thisBlock=words.slice(offset,offset+blockSize);
- cipher.decryptBlock(words,offset);
- xorBlock.call(this,words,offset,blockSize);
- this._prevBlock=thisBlock;
- }
- });
- function xorBlock(words,offset,blockSize){
- var block;
- var iv=this._iv;
- if(iv){
- block=iv;
- this._iv=undefined;
- }else{
- block=this._prevBlock;
- }
- for(var i=0;i<blockSize;i++){
- words[offset+i]^=block[i];
- }
- }
- return CBC;
- }());
- var C_pad=C.pad={};
- var Pkcs7=C_pad.Pkcs7={
- pad:function(data,blockSize){
- var blockSizeBytes=blockSize*4;
- var nPaddingBytes=blockSizeBytes-data.sigBytes%blockSizeBytes;
- var paddingWord=(nPaddingBytes<<24)|(nPaddingBytes<<16)|(nPaddingBytes<<8)|nPaddingBytes;
- var paddingWords=[];
- for(var i=0;i<nPaddingBytes;i+=4){
- paddingWords.push(paddingWord);
- }
- var padding=WordArray.create(paddingWords,nPaddingBytes);
- data.concat(padding);
- },
- unpad:function(data){
- var nPaddingBytes=data.words[(data.sigBytes-1)>>>2]&0xff;
- data.sigBytes-=nPaddingBytes;
- }
- };
- var BlockCipher=C_lib.BlockCipher=Cipher.extend({
- cfg:Cipher.cfg.extend({
- mode:CBC,
- padding:Pkcs7
- }),
- reset:function(){
- var modeCreator;
- Cipher.reset.call(this);
- var cfg=this.cfg;
- var iv=cfg.iv;
- var mode=cfg.mode;
- if(this._xformMode==this._ENC_XFORM_MODE){
- modeCreator=mode.createEncryptor;
- }else
- {
- modeCreator=mode.createDecryptor;
- this._minBufferSize=1;
- }
- if(this._mode&&this._mode.__creator==modeCreator){
- this._mode.init(this,iv&&iv.words);
- }else{
- this._mode=modeCreator.call(mode,this,iv&&iv.words);
- this._mode.__creator=modeCreator;
- }
- },
- _doProcessBlock:function(words,offset){
- this._mode.processBlock(words,offset);
- },
- _doFinalize:function(){
- var finalProcessedBlocks;
- var padding=this.cfg.padding;
- if(this._xformMode==this._ENC_XFORM_MODE){
- padding.pad(this._data,this.blockSize);
- finalProcessedBlocks=this._process(!!'flush');
- }else
- {
- finalProcessedBlocks=this._process(!!'flush');
- padding.unpad(finalProcessedBlocks);
- }
- return finalProcessedBlocks;
- },
- blockSize:128/32
- });
- var CipherParams=C_lib.CipherParams=Base.extend({
- init:function(cipherParams){
- this.mixIn(cipherParams);
- },
- toString:function(formatter){
- return(formatter||this.formatter).stringify(this);
- }
- });
- var C_format=C.format={};
- var OpenSSLFormatter=C_format.OpenSSL={
- stringify:function(cipherParams){
- var wordArray;
- var ciphertext=cipherParams.ciphertext;
- var salt=cipherParams.salt;
- if(salt){
- wordArray=WordArray.create([0x53616c74,0x65645f5f]).concat(salt).concat(ciphertext);
- }else{
- wordArray=ciphertext;
- }
- return wordArray.toString(Base64);
- },
- parse:function(openSSLStr){
- var salt;
- var ciphertext=Base64.parse(openSSLStr);
- var ciphertextWords=ciphertext.words;
- if(ciphertextWords[0]==0x53616c74&&ciphertextWords[1]==0x65645f5f){
- salt=WordArray.create(ciphertextWords.slice(2,4));
- ciphertextWords.splice(0,4);
- ciphertext.sigBytes-=16;
- }
- return CipherParams.create({
- ciphertext:ciphertext,
- salt:salt
- });
- }
- };
- var SerializableCipher=C_lib.SerializableCipher=Base.extend({
- cfg:Base.extend({
- format:OpenSSLFormatter
- }),
- encrypt:function(cipher,message,key,cfg){
- cfg=this.cfg.extend(cfg);
- var encryptor=cipher.createEncryptor(key,cfg);
- var ciphertext=encryptor.finalize(message);
- var cipherCfg=encryptor.cfg;
- return CipherParams.create({
- ciphertext:ciphertext,
- key:key,
- iv:cipherCfg.iv,
- algorithm:cipher,
- mode:cipherCfg.mode,
- padding:cipherCfg.padding,
- blockSize:cipher.blockSize,
- formatter:cfg.format
- });
- },
- decrypt:function(cipher,ciphertext,key,cfg){
- cfg=this.cfg.extend(cfg);
- ciphertext=this._parse(ciphertext,cfg.format);
- var plaintext=cipher.createDecryptor(key,cfg).finalize(ciphertext.ciphertext);
- return plaintext;
- },
- _parse:function(ciphertext,format){
- if(typeof ciphertext=='string'){
- return format.parse(ciphertext,this);
- }else{
- return ciphertext;
- }
- }
- });
- var C_kdf=C.kdf={};
- var OpenSSLKdf=C_kdf.OpenSSL={
- execute:function(password,keySize,ivSize,salt){
- if(!salt){
- salt=WordArray.random(64/8);
- }
- var key=EvpKDF.create({
- keySize:keySize+ivSize
- }).compute(password,salt);
- var iv=WordArray.create(key.words.slice(keySize),ivSize*4);
- key.sigBytes=keySize*4;
- return CipherParams.create({
- key:key,
- iv:iv,
- salt:salt
- });
- }
- };
- var PasswordBasedCipher=C_lib.PasswordBasedCipher=SerializableCipher.extend({
- cfg:SerializableCipher.cfg.extend({
- kdf:OpenSSLKdf
- }),
- encrypt:function(cipher,message,password,cfg){
- cfg=this.cfg.extend(cfg);
- var derivedParams=cfg.kdf.execute(password,cipher.keySize,cipher.ivSize);
- cfg.iv=derivedParams.iv;
- var ciphertext=SerializableCipher.encrypt.call(this,cipher,message,derivedParams.key,cfg);
- ciphertext.mixIn(derivedParams);
- return ciphertext;
- },
- decrypt:function(cipher,ciphertext,password,cfg){
- cfg=this.cfg.extend(cfg);
- ciphertext=this._parse(ciphertext,cfg.format);
- var derivedParams=cfg.kdf.execute(password,cipher.keySize,cipher.ivSize,ciphertext.salt);
- cfg.iv=derivedParams.iv;
- var plaintext=SerializableCipher.decrypt.call(this,cipher,ciphertext,derivedParams.key,cfg);
- return plaintext;
- }
- });
- }());
- CryptoJS.mode.CFB=(function(){
- var CFB=CryptoJS.lib.BlockCipherMode.extend();
- CFB.Encryptor=CFB.extend({
- processBlock:function(words,offset){
- var cipher=this._cipher;
- var blockSize=cipher.blockSize;
- generateKeystreamAndEncrypt.call(this,words,offset,blockSize,cipher);
- this._prevBlock=words.slice(offset,offset+blockSize);
- }
- });
- CFB.Decryptor=CFB.extend({
- processBlock:function(words,offset){
- var cipher=this._cipher;
- var blockSize=cipher.blockSize;
- var thisBlock=words.slice(offset,offset+blockSize);
- generateKeystreamAndEncrypt.call(this,words,offset,blockSize,cipher);
- this._prevBlock=thisBlock;
- }
- });
- function generateKeystreamAndEncrypt(words,offset,blockSize,cipher){
- var keystream;
- var iv=this._iv;
- if(iv){
- keystream=iv.slice(0);
- this._iv=undefined;
- }else{
- keystream=this._prevBlock;
- }
- cipher.encryptBlock(keystream,0);
- for(var i=0;i<blockSize;i++){
- words[offset+i]^=keystream[i];
- }
- }
- return CFB;
- }());
- CryptoJS.mode.CTR=(function(){
- var CTR=CryptoJS.lib.BlockCipherMode.extend();
- var Encryptor=CTR.Encryptor=CTR.extend({
- processBlock:function(words,offset){
- var cipher=this._cipher
- var blockSize=cipher.blockSize;
- var iv=this._iv;
- var counter=this._counter;
- if(iv){
- counter=this._counter=iv.slice(0);
- this._iv=undefined;
- }
- var keystream=counter.slice(0);
- cipher.encryptBlock(keystream,0);
- counter[blockSize-1]=(counter[blockSize-1]+1)|0
- for(var i=0;i<blockSize;i++){
- words[offset+i]^=keystream[i];
- }
- }
- });
- CTR.Decryptor=Encryptor;
- return CTR;
- }());
- CryptoJS.mode.CTRGladman=(function(){
- var CTRGladman=CryptoJS.lib.BlockCipherMode.extend();
- function incWord(word){
- if(((word>>24)&0xff)===0xff){
- var b1=(word>>16)&0xff;
- var b2=(word>>8)&0xff;
- var b3=word&0xff;
- if(b1===0xff)
- {
- b1=0;
- if(b2===0xff){
- b2=0;
- if(b3===0xff){
- b3=0;
- }else{++b3;
- }
- }else{++b2;
- }
- }else{++b1;
- }
- word=0;
- word+=(b1<<16);
- word+=(b2<<8);
- word+=b3;
- }else{
- word+=(0x01<<24);
- }
- return word;
- }
- function incCounter(counter){
- if((counter[0]=incWord(counter[0]))===0){
- counter[1]=incWord(counter[1]);
- }
- return counter;
- }
- var Encryptor=CTRGladman.Encryptor=CTRGladman.extend({
- processBlock:function(words,offset){
- var cipher=this._cipher
- var blockSize=cipher.blockSize;
- var iv=this._iv;
- var counter=this._counter;
- if(iv){
- counter=this._counter=iv.slice(0);
- this._iv=undefined;
- }
- incCounter(counter);
- var keystream=counter.slice(0);
- cipher.encryptBlock(keystream,0);
- for(var i=0;i<blockSize;i++){
- words[offset+i]^=keystream[i];
- }
- }
- });
- CTRGladman.Decryptor=Encryptor;
- return CTRGladman;
- }());
- CryptoJS.mode.OFB=(function(){
- var OFB=CryptoJS.lib.BlockCipherMode.extend();
- var Encryptor=OFB.Encryptor=OFB.extend({
- processBlock:function(words,offset){
- var cipher=this._cipher
- var blockSize=cipher.blockSize;
- var iv=this._iv;
- var keystream=this._keystream;
- if(iv){
- keystream=this._keystream=iv.slice(0);
- this._iv=undefined;
- }
- cipher.encryptBlock(keystream,0);
- for(var i=0;i<blockSize;i++){
- words[offset+i]^=keystream[i];
- }
- }
- });
- OFB.Decryptor=Encryptor;
- return OFB;
- }());
- CryptoJS.mode.ECB=(function(){
- var ECB=CryptoJS.lib.BlockCipherMode.extend();
- ECB.Encryptor=ECB.extend({
- processBlock:function(words,offset){
- this._cipher.encryptBlock(words,offset);
- }
- });
- ECB.Decryptor=ECB.extend({
- processBlock:function(words,offset){
- this._cipher.decryptBlock(words,offset);
- }
- });
- return ECB;
- }());
- CryptoJS.pad.AnsiX923={
- pad:function(data,blockSize){
- var dataSigBytes=data.sigBytes;
- var blockSizeBytes=blockSize*4;
- var nPaddingBytes=blockSizeBytes-dataSigBytes%blockSizeBytes;
- var lastBytePos=dataSigBytes+nPaddingBytes-1;
- data.clamp();
- data.words[lastBytePos>>>2]|=nPaddingBytes<<(24-(lastBytePos%4)*8);
- data.sigBytes+=nPaddingBytes;
- },
- unpad:function(data){
- var nPaddingBytes=data.words[(data.sigBytes-1)>>>2]&0xff;
- data.sigBytes-=nPaddingBytes;
- }
- };
- CryptoJS.pad.Iso10126={
- pad:function(data,blockSize){
- var blockSizeBytes=blockSize*4;
- var nPaddingBytes=blockSizeBytes-data.sigBytes%blockSizeBytes;
- data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes-1)).concat(CryptoJS.lib.WordArray.create([nPaddingBytes<<24],1));
- },
- unpad:function(data){
- var nPaddingBytes=data.words[(data.sigBytes-1)>>>2]&0xff;
- data.sigBytes-=nPaddingBytes;
- }
- };
- CryptoJS.pad.Iso97971={
- pad:function(data,blockSize){
- data.concat(CryptoJS.lib.WordArray.create([0x80000000],1));
- CryptoJS.pad.ZeroPadding.pad(data,blockSize);
- },
- unpad:function(data){
- CryptoJS.pad.ZeroPadding.unpad(data);
- data.sigBytes--;
- }
- };
- CryptoJS.pad.ZeroPadding={
- pad:function(data,blockSize){
- var blockSizeBytes=blockSize*4;
- data.clamp();
- data.sigBytes+=blockSizeBytes-((data.sigBytes%blockSizeBytes)||blockSizeBytes);
- },
- unpad:function(data){
- var dataWords=data.words;
- var i=data.sigBytes-1;
- for(var i=data.sigBytes-1;i>=0;i--){
- if(((dataWords[i>>>2]>>>(24-(i%4)*8))&0xff)){
- data.sigBytes=i+1;
- break;
- }
- }
- }
- };
- CryptoJS.pad.NoPadding={
- pad:function(){},
- unpad:function(){}
- };
- (function(undefined){
- var C=CryptoJS;
- var C_lib=C.lib;
- var CipherParams=C_lib.CipherParams;
- var C_enc=C.enc;
- var Hex=C_enc.Hex;
- var C_format=C.format;
- var HexFormatter=C_format.Hex={
- stringify:function(cipherParams){
- return cipherParams.ciphertext.toString(Hex);
- },
- parse:function(input){
- var ciphertext=Hex.parse(input);
- return CipherParams.create({
- ciphertext:ciphertext
- });
- }
- };
- }());
- (function(){
- var C=CryptoJS;
- var C_lib=C.lib;
- var BlockCipher=C_lib.BlockCipher;
- var C_algo=C.algo;
- var SBOX=[];
- var INV_SBOX=[];
- var SUB_MIX_0=[];
- var SUB_MIX_1=[];
- var SUB_MIX_2=[];
- var SUB_MIX_3=[];
- var INV_SUB_MIX_0=[];
- var INV_SUB_MIX_1=[];
- var INV_SUB_MIX_2=[];
- var INV_SUB_MIX_3=[];
- (function(){
- var d=[];
- for(var i=0;i<256;i++){
- if(i<128){
- d[i]=i<<1;
- }else{
- d[i]=(i<<1)^0x11b;
- }
- }
- var x=0;
- var xi=0;
- for(var i=0;i<256;i++){
- var sx=xi^(xi<<1)^(xi<<2)^(xi<<3)^(xi<<4);
- sx=(sx>>>8)^(sx&0xff)^0x63;
- SBOX[x]=sx;
- INV_SBOX[sx]=x;
- var x2=d[x];
- var x4=d[x2];
- var x8=d[x4];
- var t=(d[sx]*0x101)^(sx*0x1010100);
- SUB_MIX_0[x]=(t<<24)|(t>>>8);
- SUB_MIX_1[x]=(t<<16)|(t>>>16);
- SUB_MIX_2[x]=(t<<8)|(t>>>24);
- SUB_MIX_3[x]=t;
- var t=(x8*0x1010101)^(x4*0x10001)^(x2*0x101)^(x*0x1010100);
- INV_SUB_MIX_0[sx]=(t<<24)|(t>>>8);
- INV_SUB_MIX_1[sx]=(t<<16)|(t>>>16);
- INV_SUB_MIX_2[sx]=(t<<8)|(t>>>24);
- INV_SUB_MIX_3[sx]=t;
- if(!x){
- x=xi=1;
- }else{
- x=x2^d[d[d[x8^x2]]];
- xi^=d[d[xi]];
- }
- }
- }());
- var RCON=[0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x1b,0x36];
- var AES=C_algo.AES=BlockCipher.extend({
- _doReset:function(){
- var t;
- if(this._nRounds&&this._keyPriorReset===this._key){
- return;
- }
- var key=this._keyPriorReset=this._key;
- var keyWords=key.words;
- var keySize=key.sigBytes/4;
- var nRounds=this._nRounds=keySize+6;
- var ksRows=(nRounds+1)*4;
- var keySchedule=this._keySchedule=[];
- for(var ksRow=0;ksRow<ksRows;ksRow++){
- if(ksRow<keySize){
- keySchedule[ksRow]=keyWords[ksRow];
- }else{
- t=keySchedule[ksRow-1];
- if(!(ksRow%keySize)){
- t=(t<<8)|(t>>>24);
- t=(SBOX[t>>>24]<<24)|(SBOX[(t>>>16)&0xff]<<16)|(SBOX[(t>>>8)&0xff]<<8)|SBOX[t&0xff];
- t^=RCON[(ksRow/keySize)|0]<<24;
- }else if(keySize>6&&ksRow%keySize==4){
- t=(SBOX[t>>>24]<<24)|(SBOX[(t>>>16)&0xff]<<16)|(SBOX[(t>>>8)&0xff]<<8)|SBOX[t&0xff];
- }
- keySchedule[ksRow]=keySchedule[ksRow-keySize]^t;
- }
- }
- var invKeySchedule=this._invKeySchedule=[];
- for(var invKsRow=0;invKsRow<ksRows;invKsRow++){
- var ksRow=ksRows-invKsRow;
- if(invKsRow%4){
- var t=keySchedule[ksRow];
- }else{
- var t=keySchedule[ksRow-4];
- }
- if(invKsRow<4||ksRow<=4){
- invKeySchedule[invKsRow]=t;
- }else{
- invKeySchedule[invKsRow]=INV_SUB_MIX_0[SBOX[t>>>24]]^INV_SUB_MIX_1[SBOX[(t>>>16)&0xff]]^INV_SUB_MIX_2[SBOX[(t>>>8)&0xff]]^INV_SUB_MIX_3[SBOX[t&0xff]];
- }
- }
- },
- encryptBlock:function(M,offset){
- this._doCryptBlock(M,offset,this._keySchedule,SUB_MIX_0,SUB_MIX_1,SUB_MIX_2,SUB_MIX_3,SBOX);
- },
- decryptBlock:function(M,offset){
- var t=M[offset+1];
- M[offset+1]=M[offset+3];
- M[offset+3]=t;
- this._doCryptBlock(M,offset,this._invKeySchedule,INV_SUB_MIX_0,INV_SUB_MIX_1,INV_SUB_MIX_2,INV_SUB_MIX_3,INV_SBOX);
- var t=M[offset+1];
- M[offset+1]=M[offset+3];
- M[offset+3]=t;
- },
- _doCryptBlock:function(M,offset,keySchedule,SUB_MIX_0,SUB_MIX_1,SUB_MIX_2,SUB_MIX_3,SBOX){
- var nRounds=this._nRounds;
- var s0=M[offset]^keySchedule[0];
- var s1=M[offset+1]^keySchedule[1];
- var s2=M[offset+2]^keySchedule[2];
- var s3=M[offset+3]^keySchedule[3];
- var ksRow=4;
- for(var round=1;round<nRounds;round++){
- var t0=SUB_MIX_0[s0>>>24]^SUB_MIX_1[(s1>>>16)&0xff]^SUB_MIX_2[(s2>>>8)&0xff]^SUB_MIX_3[s3&0xff]^keySchedule[ksRow++];
- var t1=SUB_MIX_0[s1>>>24]^SUB_MIX_1[(s2>>>16)&0xff]^SUB_MIX_2[(s3>>>8)&0xff]^SUB_MIX_3[s0&0xff]^keySchedule[ksRow++];
- var t2=SUB_MIX_0[s2>>>24]^SUB_MIX_1[(s3>>>16)&0xff]^SUB_MIX_2[(s0>>>8)&0xff]^SUB_MIX_3[s1&0xff]^keySchedule[ksRow++];
- var t3=SUB_MIX_0[s3>>>24]^SUB_MIX_1[(s0>>>16)&0xff]^SUB_MIX_2[(s1>>>8)&0xff]^SUB_MIX_3[s2&0xff]^keySchedule[ksRow++];
- s0=t0;
- s1=t1;
- s2=t2;
- s3=t3;
- }
- var t0=((SBOX[s0>>>24]<<24)|(SBOX[(s1>>>16)&0xff]<<16)|(SBOX[(s2>>>8)&0xff]<<8)|SBOX[s3&0xff])^keySchedule[ksRow++];
- var t1=((SBOX[s1>>>24]<<24)|(SBOX[(s2>>>16)&0xff]<<16)|(SBOX[(s3>>>8)&0xff]<<8)|SBOX[s0&0xff])^keySchedule[ksRow++];
- var t2=((SBOX[s2>>>24]<<24)|(SBOX[(s3>>>16)&0xff]<<16)|(SBOX[(s0>>>8)&0xff]<<8)|SBOX[s1&0xff])^keySchedule[ksRow++];
- var t3=((SBOX[s3>>>24]<<24)|(SBOX[(s0>>>16)&0xff]<<16)|(SBOX[(s1>>>8)&0xff]<<8)|SBOX[s2&0xff])^keySchedule[ksRow++];
- M[offset]=t0;
- M[offset+1]=t1;
- M[offset+2]=t2;
- M[offset+3]=t3;
- },
- keySize:256/32
- });
- C.AES=BlockCipher._createHelper(AES);
- }());
- (function(){
- var C=CryptoJS;
- var C_lib=C.lib;
- var WordArray=C_lib.WordArray;
- var BlockCipher=C_lib.BlockCipher;
- var C_algo=C.algo;
- var PC1=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4];
- var PC2=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32];
- var BIT_SHIFTS=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28];
- var SBOX_P=[{
- 0x0:0x808200,
- 0x10000000:0x8000,
- 0x20000000:0x808002,
- 0x30000000:0x2,
- 0x40000000:0x200,
- 0x50000000:0x808202,
- 0x60000000:0x800202,
- 0x70000000:0x800000,
- 0x80000000:0x202,
- 0x90000000:0x800200,
- 0xa0000000:0x8200,
- 0xb0000000:0x808000,
- 0xc0000000:0x8002,
- 0xd0000000:0x800002,
- 0xe0000000:0x0,
- 0xf0000000:0x8202,
- 0x8000000:0x0,
- 0x18000000:0x808202,
- 0x28000000:0x8202,
- 0x38000000:0x8000,
- 0x48000000:0x808200,
- 0x58000000:0x200,
- 0x68000000:0x808002,
- 0x78000000:0x2,
- 0x88000000:0x800200,
- 0x98000000:0x8200,
- 0xa8000000:0x808000,
- 0xb8000000:0x800202,
- 0xc8000000:0x800002,
- 0xd8000000:0x8002,
- 0xe8000000:0x202,
- 0xf8000000:0x800000,
- 0x1:0x8000,
- 0x10000001:0x2,
- 0x20000001:0x808200,
- 0x30000001:0x800000,
- 0x40000001:0x808002,
- 0x50000001:0x8200,
- 0x60000001:0x200,
- 0x70000001:0x800202,
- 0x80000001:0x808202,
- 0x90000001:0x808000,
- 0xa0000001:0x800002,
- 0xb0000001:0x8202,
- 0xc0000001:0x202,
- 0xd0000001:0x800200,
- 0xe0000001:0x8002,
- 0xf0000001:0x0,
- 0x8000001:0x808202,
- 0x18000001:0x808000,
- 0x28000001:0x800000,
- 0x38000001:0x200,
- 0x48000001:0x8000,
- 0x58000001:0x800002,
- 0x68000001:0x2,
- 0x78000001:0x8202,
- 0x88000001:0x8002,
- 0x98000001:0x800202,
- 0xa8000001:0x202,
- 0xb8000001:0x808200,
- 0xc8000001:0x800200,
- 0xd8000001:0x0,
- 0xe8000001:0x8200,
- 0xf8000001:0x808002
- },
- {
- 0x0:0x40084010,
- 0x1000000:0x4000,
- 0x2000000:0x80000,
- 0x3000000:0x40080010,
- 0x4000000:0x40000010,
- 0x5000000:0x40084000,
- 0x6000000:0x40004000,
- 0x7000000:0x10,
- 0x8000000:0x84000,
- 0x9000000:0x40004010,
- 0xa000000:0x40000000,
- 0xb000000:0x84010,
- 0xc000000:0x80010,
- 0xd000000:0x0,
- 0xe000000:0x4010,
- 0xf000000:0x40080000,
- 0x800000:0x40004000,
- 0x1800000:0x84010,
- 0x2800000:0x10,
- 0x3800000:0x40004010,
- 0x4800000:0x40084010,
- 0x5800000:0x40000000,
- 0x6800000:0x80000,
- 0x7800000:0x40080010,
- 0x8800000:0x80010,
- 0x9800000:0x0,
- 0xa800000:0x4000,
- 0xb800000:0x40080000,
- 0xc800000:0x40000010,
- 0xd800000:0x84000,
- 0xe800000:0x40084000,
- 0xf800000:0x4010,
- 0x10000000:0x0,
- 0x11000000:0x40080010,
- 0x12000000:0x40004010,
- 0x13000000:0x40084000,
- 0x14000000:0x40080000,
- 0x15000000:0x10,
- 0x16000000:0x84010,
- 0x17000000:0x4000,
- 0x18000000:0x4010,
- 0x19000000:0x80000,
- 0x1a000000:0x80010,
- 0x1b000000:0x40000010,
- 0x1c000000:0x84000,
- 0x1d000000:0x40004000,
- 0x1e000000:0x40000000,
- 0x1f000000:0x40084010,
- 0x10800000:0x84010,
- 0x11800000:0x80000,
- 0x12800000:0x40080000,
- 0x13800000:0x4000,
- 0x14800000:0x40004000,
- 0x15800000:0x40084010,
- 0x16800000:0x10,
- 0x17800000:0x40000000,
- 0x18800000:0x40084000,
- 0x19800000:0x40000010,
- 0x1a800000:0x40004010,
- 0x1b800000:0x80010,
- 0x1c800000:0x0,
- 0x1d800000:0x4010,
- 0x1e800000:0x40080010,
- 0x1f800000:0x84000
- },
- {
- 0x0:0x104,
- 0x100000:0x0,
- 0x200000:0x4000100,
- 0x300000:0x10104,
- 0x400000:0x10004,
- 0x500000:0x4000004,
- 0x600000:0x4010104,
- 0x700000:0x4010000,
- 0x800000:0x4000000,
- 0x900000:0x4010100,
- 0xa00000:0x10100,
- 0xb00000:0x4010004,
- 0xc00000:0x4000104,
- 0xd00000:0x10000,
- 0xe00000:0x4,
- 0xf00000:0x100,
- 0x80000:0x4010100,
- 0x180000:0x4010004,
- 0x280000:0x0,
- 0x380000:0x4000100,
- 0x480000:0x4000004,
- 0x580000:0x10000,
- 0x680000:0x10004,
- 0x780000:0x104,
- 0x880000:0x4,
- 0x980000:0x100,
- 0xa80000:0x4010000,
- 0xb80000:0x10104,
- 0xc80000:0x10100,
- 0xd80000:0x4000104,
- 0xe80000:0x4010104,
- 0xf80000:0x4000000,
- 0x1000000:0x4010100,
- 0x1100000:0x10004,
- 0x1200000:0x10000,
- 0x1300000:0x4000100,
- 0x1400000:0x100,
- 0x1500000:0x4010104,
- 0x1600000:0x4000004,
- 0x1700000:0x0,
- 0x1800000:0x4000104,
- 0x1900000:0x4000000,
- 0x1a00000:0x4,
- 0x1b00000:0x10100,
- 0x1c00000:0x4010000,
- 0x1d00000:0x104,
- 0x1e00000:0x10104,
- 0x1f00000:0x4010004,
- 0x1080000:0x4000000,
- 0x1180000:0x104,
- 0x1280000:0x4010100,
- 0x1380000:0x0,
- 0x1480000:0x10004,
- 0x1580000:0x4000100,
- 0x1680000:0x100,
- 0x1780000:0x4010004,
- 0x1880000:0x10000,
- 0x1980000:0x4010104,
- 0x1a80000:0x10104,
- 0x1b80000:0x4000004,
- 0x1c80000:0x4000104,
- 0x1d80000:0x4010000,
- 0x1e80000:0x4,
- 0x1f80000:0x10100
- },
- {
- 0x0:0x80401000,
- 0x10000:0x80001040,
- 0x20000:0x401040,
- 0x30000:0x80400000,
- 0x40000:0x0,
- 0x50000:0x401000,
- 0x60000:0x80000040,
- 0x70000:0x400040,
- 0x80000:0x80000000,
- 0x90000:0x400000,
- 0xa0000:0x40,
- 0xb0000:0x80001000,
- 0xc0000:0x80400040,
- 0xd0000:0x1040,
- 0xe0000:0x1000,
- 0xf0000:0x80401040,
- 0x8000:0x80001040,
- 0x18000:0x40,
- 0x28000:0x80400040,
- 0x38000:0x80001000,
- 0x48000:0x401000,
- 0x58000:0x80401040,
- 0x68000:0x0,
- 0x78000:0x80400000,
- 0x88000:0x1000,
- 0x98000:0x80401000,
- 0xa8000:0x400000,
- 0xb8000:0x1040,
- 0xc8000:0x80000000,
- 0xd8000:0x400040,
- 0xe8000:0x401040,
- 0xf8000:0x80000040,
- 0x100000:0x400040,
- 0x110000:0x401000,
- 0x120000:0x80000040,
- 0x130000:0x0,
- 0x140000:0x1040,
- 0x150000:0x80400040,
- 0x160000:0x80401000,
- 0x170000:0x80001040,
- 0x180000:0x80401040,
- 0x190000:0x80000000,
- 0x1a0000:0x80400000,
- 0x1b0000:0x401040,
- 0x1c0000:0x80001000,
- 0x1d0000:0x400000,
- 0x1e0000:0x40,
- 0x1f0000:0x1000,
- 0x108000:0x80400000,
- 0x118000:0x80401040,
- 0x128000:0x0,
- 0x138000:0x401000,
- 0x148000:0x400040,
- 0x158000:0x80000000,
- 0x168000:0x80001040,
- 0x178000:0x40,
- 0x188000:0x80000040,
- 0x198000:0x1000,
- 0x1a8000:0x80001000,
- 0x1b8000:0x80400040,
- 0x1c8000:0x1040,
- 0x1d8000:0x80401000,
- 0x1e8000:0x400000,
- 0x1f8000:0x401040
- },
- {
- 0x0:0x80,
- 0x1000:0x1040000,
- 0x2000:0x40000,
- 0x3000:0x20000000,
- 0x4000:0x20040080,
- 0x5000:0x1000080,
- 0x6000:0x21000080,
- 0x7000:0x40080,
- 0x8000:0x1000000,
- 0x9000:0x20040000,
- 0xa000:0x20000080,
- 0xb000:0x21040080,
- 0xc000:0x21040000,
- 0xd000:0x0,
- 0xe000:0x1040080,
- 0xf000:0x21000000,
- 0x800:0x1040080,
- 0x1800:0x21000080,
- 0x2800:0x80,
- 0x3800:0x1040000,
- 0x4800:0x40000,
- 0x5800:0x20040080,
- 0x6800:0x21040000,
- 0x7800:0x20000000,
- 0x8800:0x20040000,
- 0x9800:0x0,
- 0xa800:0x21040080,
- 0xb800:0x1000080,
- 0xc800:0x20000080,
- 0xd800:0x21000000,
- 0xe800:0x1000000,
- 0xf800:0x40080,
- 0x10000:0x40000,
- 0x11000:0x80,
- 0x12000:0x20000000,
- 0x13000:0x21000080,
- 0x14000:0x1000080,
- 0x15000:0x21040000,
- 0x16000:0x20040080,
- 0x17000:0x1000000,
- 0x18000:0x21040080,
- 0x19000:0x21000000,
- 0x1a000:0x1040000,
- 0x1b000:0x20040000,
- 0x1c000:0x40080,
- 0x1d000:0x20000080,
- 0x1e000:0x0,
- 0x1f000:0x1040080,
- 0x10800:0x21000080,
- 0x11800:0x1000000,
- 0x12800:0x1040000,
- 0x13800:0x20040080,
- 0x14800:0x20000000,
- 0x15800:0x1040080,
- 0x16800:0x80,
- 0x17800:0x21040000,
- 0x18800:0x40080,
- 0x19800:0x21040080,
- 0x1a800:0x0,
- 0x1b800:0x21000000,
- 0x1c800:0x1000080,
- 0x1d800:0x40000,
- 0x1e800:0x20040000,
- 0x1f800:0x20000080
- },
- {
- 0x0:0x10000008,
- 0x100:0x2000,
- 0x200:0x10200000,
- 0x300:0x10202008,
- 0x400:0x10002000,
- 0x500:0x200000,
- 0x600:0x200008,
- 0x700:0x10000000,
- 0x800:0x0,
- 0x900:0x10002008,
- 0xa00:0x202000,
- 0xb00:0x8,
- 0xc00:0x10200008,
- 0xd00:0x202008,
- 0xe00:0x2008,
- 0xf00:0x10202000,
- 0x80:0x10200000,
- 0x180:0x10202008,
- 0x280:0x8,
- 0x380:0x200000,
- 0x480:0x202008,
- 0x580:0x10000008,
- 0x680:0x10002000,
- 0x780:0x2008,
- 0x880:0x200008,
- 0x980:0x2000,
- 0xa80:0x10002008,
- 0xb80:0x10200008,
- 0xc80:0x0,
- 0xd80:0x10202000,
- 0xe80:0x202000,
- 0xf80:0x10000000,
- 0x1000:0x10002000,
- 0x1100:0x10200008,
- 0x1200:0x10202008,
- 0x1300:0x2008,
- 0x1400:0x200000,
- 0x1500:0x10000000,
- 0x1600:0x10000008,
- 0x1700:0x202000,
- 0x1800:0x202008,
- 0x1900:0x0,
- 0x1a00:0x8,
- 0x1b00:0x10200000,
- 0x1c00:0x2000,
- 0x1d00:0x10002008,
- 0x1e00:0x10202000,
- 0x1f00:0x200008,
- 0x1080:0x8,
- 0x1180:0x202000,
- 0x1280:0x200000,
- 0x1380:0x10000008,
- 0x1480:0x10002000,
- 0x1580:0x2008,
- 0x1680:0x10202008,
- 0x1780:0x10200000,
- 0x1880:0x10202000,
- 0x1980:0x10200008,
- 0x1a80:0x2000,
- 0x1b80:0x202008,
- 0x1c80:0x200008,
- 0x1d80:0x0,
- 0x1e80:0x10000000,
- 0x1f80:0x10002008
- },
- {
- 0x0:0x100000,
- 0x10:0x2000401,
- 0x20:0x400,
- 0x30:0x100401,
- 0x40:0x2100401,
- 0x50:0x0,
- 0x60:0x1,
- 0x70:0x2100001,
- 0x80:0x2000400,
- 0x90:0x100001,
- 0xa0:0x2000001,
- 0xb0:0x2100400,
- 0xc0:0x2100000,
- 0xd0:0x401,
- 0xe0:0x100400,
- 0xf0:0x2000000,
- 0x8:0x2100001,
- 0x18:0x0,
- 0x28:0x2000401,
- 0x38:0x2100400,
- 0x48:0x100000,
- 0x58:0x2000001,
- 0x68:0x2000000,
- 0x78:0x401,
- 0x88:0x100401,
- 0x98:0x2000400,
- 0xa8:0x2100000,
- 0xb8:0x100001,
- 0xc8:0x400,
- 0xd8:0x2100401,
- 0xe8:0x1,
- 0xf8:0x100400,
- 0x100:0x2000000,
- 0x110:0x100000,
- 0x120:0x2000401,
- 0x130:0x2100001,
- 0x140:0x100001,
- 0x150:0x2000400,
- 0x160:0x2100400,
- 0x170:0x100401,
- 0x180:0x401,
- 0x190:0x2100401,
- 0x1a0:0x100400,
- 0x1b0:0x1,
- 0x1c0:0x0,
- 0x1d0:0x2100000,
- 0x1e0:0x2000001,
- 0x1f0:0x400,
- 0x108:0x100400,
- 0x118:0x2000401,
- 0x128:0x2100001,
- 0x138:0x1,
- 0x148:0x2000000,
- 0x158:0x100000,
- 0x168:0x401,
- 0x178:0x2100400,
- 0x188:0x2000001,
- 0x198:0x2100000,
- 0x1a8:0x0,
- 0x1b8:0x2100401,
- 0x1c8:0x100401,
- 0x1d8:0x400,
- 0x1e8:0x2000400,
- 0x1f8:0x100001
- },
- {
- 0x0:0x8000820,
- 0x1:0x20000,
- 0x2:0x8000000,
- 0x3:0x20,
- 0x4:0x20020,
- 0x5:0x8020820,
- 0x6:0x8020800,
- 0x7:0x800,
- 0x8:0x8020000,
- 0x9:0x8000800,
- 0xa:0x20800,
- 0xb:0x8020020,
- 0xc:0x820,
- 0xd:0x0,
- 0xe:0x8000020,
- 0xf:0x20820,
- 0x80000000:0x800,
- 0x80000001:0x8020820,
- 0x80000002:0x8000820,
- 0x80000003:0x8000000,
- 0x80000004:0x8020000,
- 0x80000005:0x20800,
- 0x80000006:0x20820,
- 0x80000007:0x20,
- 0x80000008:0x8000020,
- 0x80000009:0x820,
- 0x8000000a:0x20020,
- 0x8000000b:0x8020800,
- 0x8000000c:0x0,
- 0x8000000d:0x8020020,
- 0x8000000e:0x8000800,
- 0x8000000f:0x20000,
- 0x10:0x20820,
- 0x11:0x8020800,
- 0x12:0x20,
- 0x13:0x800,
- 0x14:0x8000800,
- 0x15:0x8000020,
- 0x16:0x8020020,
- 0x17:0x20000,
- 0x18:0x0,
- 0x19:0x20020,
- 0x1a:0x8020000,
- 0x1b:0x8000820,
- 0x1c:0x8020820,
- 0x1d:0x20800,
- 0x1e:0x820,
- 0x1f:0x8000000,
- 0x80000010:0x20000,
- 0x80000011:0x800,
- 0x80000012:0x8020020,
- 0x80000013:0x20820,
- 0x80000014:0x20,
- 0x80000015:0x8020000,
- 0x80000016:0x8000000,
- 0x80000017:0x8000820,
- 0x80000018:0x8020820,
- 0x80000019:0x8000020,
- 0x8000001a:0x8000800,
- 0x8000001b:0x0,
- 0x8000001c:0x20800,
- 0x8000001d:0x820,
- 0x8000001e:0x20020,
- 0x8000001f:0x8020800
- }];
- var SBOX_MASK=[0xf8000001,0x1f800000,0x01f80000,0x001f8000,0x0001f800,0x00001f80,0x000001f8,0x8000001f];
- var DES=C_algo.DES=BlockCipher.extend({
- _doReset:function(){
- var key=this._key;
- var keyWords=key.words;
- var keyBits=[];
- for(var i=0;i<56;i++){
- var keyBitPos=PC1[i]-1;
- keyBits[i]=(keyWords[keyBitPos>>>5]>>>(31-keyBitPos%32))&1;
- }
- var subKeys=this._subKeys=[];
- for(var nSubKey=0;nSubKey<16;nSubKey++){
- var subKey=subKeys[nSubKey]=[];
- var bitShift=BIT_SHIFTS[nSubKey];
- for(var i=0;i<24;i++){
- subKey[(i/6)|0]|=keyBits[((PC2[i]-1)+bitShift)%28]<<(31-i%6);
- subKey[4+((i/6)|0)]|=keyBits[28+(((PC2[i+24]-1)+bitShift)%28)]<<(31-i%6);
- }
- subKey[0]=(subKey[0]<<1)|(subKey[0]>>>31);
- for(var i=1;i<7;i++){
- subKey[i]=subKey[i]>>>((i-1)*4+3);
- }
- subKey[7]=(subKey[7]<<5)|(subKey[7]>>>27);
- }
- var invSubKeys=this._invSubKeys=[];
- for(var i=0;i<16;i++){
- invSubKeys[i]=subKeys[15-i];
- }
- },
- encryptBlock:function(M,offset){
- this._doCryptBlock(M,offset,this._subKeys);
- },
- decryptBlock:function(M,offset){
- this._doCryptBlock(M,offset,this._invSubKeys);
- },
- _doCryptBlock:function(M,offset,subKeys){
- this._lBlock=M[offset];
- this._rBlock=M[offset+1];
- exchangeLR.call(this,4,0x0f0f0f0f);
- exchangeLR.call(this,16,0x0000ffff);
- exchangeRL.call(this,2,0x33333333);
- exchangeRL.call(this,8,0x00ff00ff);
- exchangeLR.call(this,1,0x55555555);
- for(var round=0;round<16;round++){
- var subKey=subKeys[round];
- var lBlock=this._lBlock;
- var rBlock=this._rBlock;
- var f=0;
- for(var i=0;i<8;i++){
- f|=SBOX_P[i][((rBlock^subKey[i])&SBOX_MASK[i])>>>0];
- }
- this._lBlock=rBlock;
- this._rBlock=lBlock^f;
- }
- var t=this._lBlock;
- this._lBlock=this._rBlock;
- this._rBlock=t;
- exchangeLR.call(this,1,0x55555555);
- exchangeRL.call(this,8,0x00ff00ff);
- exchangeRL.call(this,2,0x33333333);
- exchangeLR.call(this,16,0x0000ffff);
- exchangeLR.call(this,4,0x0f0f0f0f);
- M[offset]=this._lBlock;
- M[offset+1]=this._rBlock;
- },
- keySize:64/32,
- ivSize:64/32,
- blockSize:64/32
- });
- function exchangeLR(offset,mask){
- var t=((this._lBlock>>>offset)^this._rBlock)&mask;
- this._rBlock^=t;
- this._lBlock^=t<<offset;
- }
- function exchangeRL(offset,mask){
- var t=((this._rBlock>>>offset)^this._lBlock)&mask;
- this._lBlock^=t;
- this._rBlock^=t<<offset;
- }
- C.DES=BlockCipher._createHelper(DES);
- var TripleDES=C_algo.TripleDES=BlockCipher.extend({
- _doReset:function(){
- var key=this._key;
- var keyWords=key.words;
- if(keyWords.length!==2&&keyWords.length!==4&&keyWords.length<6){
- throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');
- }
- var key1=keyWords.slice(0,2);
- var key2=keyWords.length<4?keyWords.slice(0,2):keyWords.slice(2,4);
- var key3=keyWords.length<6?keyWords.slice(0,2):keyWords.slice(4,6);
- this._des1=DES.createEncryptor(WordArray.create(key1));
- this._des2=DES.createEncryptor(WordArray.create(key2));
- this._des3=DES.createEncryptor(WordArray.create(key3));
- },
- encryptBlock:function(M,offset){
- this._des1.encryptBlock(M,offset);
- this._des2.decryptBlock(M,offset);
- this._des3.encryptBlock(M,offset);
- },
- decryptBlock:function(M,offset){
- this._des3.decryptBlock(M,offset);
- this._des2.encryptBlock(M,offset);
- this._des1.decryptBlock(M,offset);
- },
- keySize:192/32,
- ivSize:64/32,
- blockSize:64/32
- });
- C.TripleDES=BlockCipher._createHelper(TripleDES);
- }());
- (function(){
- var C=CryptoJS;
- var C_lib=C.lib;
- var StreamCipher=C_lib.StreamCipher;
- var C_algo=C.algo;
- var RC4=C_algo.RC4=StreamCipher.extend({
- _doReset:function(){
- var key=this._key;
- var keyWords=key.words;
- var keySigBytes=key.sigBytes;
- var S=this._S=[];
- for(var i=0;i<256;i++){
- S[i]=i;
- }
- for(var i=0,
- j=0;i<256;i++){
- var keyByteIndex=i%keySigBytes;
- var keyByte=(keyWords[keyByteIndex>>>2]>>>(24-(keyByteIndex%4)*8))&0xff;
- j=(j+S[i]+keyByte)%256;
- var t=S[i];
- S[i]=S[j];
- S[j]=t;
- }
- this._i=this._j=0;
- },
- _doProcessBlock:function(M,offset){
- M[offset]^=generateKeystreamWord.call(this);
- },
- keySize:256/32,
- ivSize:0
- });
- function generateKeystreamWord(){
- var S=this._S;
- var i=this._i;
- var j=this._j;
- var keystreamWord=0;
- for(var n=0;n<4;n++){
- i=(i+1)%256;
- j=(j+S[i])%256;
- var t=S[i];
- S[i]=S[j];
- S[j]=t;
- keystreamWord|=S[(S[i]+S[j])%256]<<(24-n*8);
- }
- this._i=i;
- this._j=j;
- return keystreamWord;
- }
- C.RC4=StreamCipher._createHelper(RC4);
- var RC4Drop=C_algo.RC4Drop=RC4.extend({
- cfg:RC4.cfg.extend({
- drop:192
- }),
- _doReset:function(){
- RC4._doReset.call(this);
- for(var i=this.cfg.drop;i>0;i--){
- generateKeystreamWord.call(this);
- }
- }
- });
- C.RC4Drop=StreamCipher._createHelper(RC4Drop);
- }());
- (function(){
- var C=CryptoJS;
- var C_lib=C.lib;
- var StreamCipher=C_lib.StreamCipher;
- var C_algo=C.algo;
- var S=[];
- var C_=[];
- var G=[];
- var Rabbit=C_algo.Rabbit=StreamCipher.extend({
- _doReset:function(){
- var K=this._key.words;
- var iv=this.cfg.iv;
- for(var i=0;i<4;i++){
- K[i]=(((K[i]<<8)|(K[i]>>>24))&0x00ff00ff)|(((K[i]<<24)|(K[i]>>>8))&0xff00ff00);
- }
- var X=this._X=[K[0],(K[3]<<16)|(K[2]>>>16),K[1],(K[0]<<16)|(K[3]>>>16),K[2],(K[1]<<16)|(K[0]>>>16),K[3],(K[2]<<16)|(K[1]>>>16)];
- var C=this._C=[(K[2]<<16)|(K[2]>>>16),(K[0]&0xffff0000)|(K[1]&0x0000ffff),(K[3]<<16)|(K[3]>>>16),(K[1]&0xffff0000)|(K[2]&0x0000ffff),(K[0]<<16)|(K[0]>>>16),(K[2]&0xffff0000)|(K[3]&0x0000ffff),(K[1]<<16)|(K[1]>>>16),(K[3]&0xffff0000)|(K[0]&0x0000ffff)];
- this._b=0;
- for(var i=0;i<4;i++){
- nextState.call(this);
- }
- for(var i=0;i<8;i++){
- C[i]^=X[(i+4)&7];
- }
- if(iv){
- var IV=iv.words;
- var IV_0=IV[0];
- var IV_1=IV[1];
- var i0=(((IV_0<<8)|(IV_0>>>24))&0x00ff00ff)|(((IV_0<<24)|(IV_0>>>8))&0xff00ff00);
- var i2=(((IV_1<<8)|(IV_1>>>24))&0x00ff00ff)|(((IV_1<<24)|(IV_1>>>8))&0xff00ff00);
- var i1=(i0>>>16)|(i2&0xffff0000);
- var i3=(i2<<16)|(i0&0x0000ffff);
- C[0]^=i0;
- C[1]^=i1;
- C[2]^=i2;
- C[3]^=i3;
- C[4]^=i0;
- C[5]^=i1;
- C[6]^=i2;
- C[7]^=i3;
- for(var i=0;i<4;i++){
- nextState.call(this);
- }
- }
- },
- _doProcessBlock:function(M,offset){
- var X=this._X;
- nextState.call(this);
- S[0]=X[0]^(X[5]>>>16)^(X[3]<<16);
- S[1]=X[2]^(X[7]>>>16)^(X[5]<<16);
- S[2]=X[4]^(X[1]>>>16)^(X[7]<<16);
- S[3]=X[6]^(X[3]>>>16)^(X[1]<<16);
- for(var i=0;i<4;i++){
- S[i]=(((S[i]<<8)|(S[i]>>>24))&0x00ff00ff)|(((S[i]<<24)|(S[i]>>>8))&0xff00ff00);
- M[offset+i]^=S[i];
- }
- },
- blockSize:128/32,
- ivSize:64/32
- });
- function nextState(){
- var X=this._X;
- var C=this._C;
- for(var i=0;i<8;i++){
- C_[i]=C[i];
- }
- C[0]=(C[0]+0x4d34d34d+this._b)|0;
- C[1]=(C[1]+0xd34d34d3+((C[0]>>>0)<(C_[0]>>>0)?1:0))|0;
- C[2]=(C[2]+0x34d34d34+((C[1]>>>0)<(C_[1]>>>0)?1:0))|0;
- C[3]=(C[3]+0x4d34d34d+((C[2]>>>0)<(C_[2]>>>0)?1:0))|0;
- C[4]=(C[4]+0xd34d34d3+((C[3]>>>0)<(C_[3]>>>0)?1:0))|0;
- C[5]=(C[5]+0x34d34d34+((C[4]>>>0)<(C_[4]>>>0)?1:0))|0;
- C[6]=(C[6]+0x4d34d34d+((C[5]>>>0)<(C_[5]>>>0)?1:0))|0;
- C[7]=(C[7]+0xd34d34d3+((C[6]>>>0)<(C_[6]>>>0)?1:0))|0;
- this._b=(C[7]>>>0)<(C_[7]>>>0)?1:0;
- for(var i=0;i<8;i++){
- var gx=X[i]+C[i];
- var ga=gx&0xffff;
- var gb=gx>>>16;
- var gh=((((ga*ga)>>>17)+ga*gb)>>>15)+gb*gb;
- var gl=(((gx&0xffff0000)*gx)|0)+(((gx&0x0000ffff)*gx)|0);
- G[i]=gh^gl;
- }
- X[0]=(G[0]+((G[7]<<16)|(G[7]>>>16))+((G[6]<<16)|(G[6]>>>16)))|0;
- X[1]=(G[1]+((G[0]<<8)|(G[0]>>>24))+G[7])|0;
- X[2]=(G[2]+((G[1]<<16)|(G[1]>>>16))+((G[0]<<16)|(G[0]>>>16)))|0;
- X[3]=(G[3]+((G[2]<<8)|(G[2]>>>24))+G[1])|0;
- X[4]=(G[4]+((G[3]<<16)|(G[3]>>>16))+((G[2]<<16)|(G[2]>>>16)))|0;
- X[5]=(G[5]+((G[4]<<8)|(G[4]>>>24))+G[3])|0;
- X[6]=(G[6]+((G[5]<<16)|(G[5]>>>16))+((G[4]<<16)|(G[4]>>>16)))|0;
- X[7]=(G[7]+((G[6]<<8)|(G[6]>>>24))+G[5])|0;
- }
- C.Rabbit=StreamCipher._createHelper(Rabbit);
- }());
- (function(){
- var C=CryptoJS;
- var C_lib=C.lib;
- var StreamCipher=C_lib.StreamCipher;
- var C_algo=C.algo;
- var S=[];
- var C_=[];
- var G=[];
- var RabbitLegacy=C_algo.RabbitLegacy=StreamCipher.extend({
- _doReset:function(){
- var K=this._key.words;
- var iv=this.cfg.iv;
- var X=this._X=[K[0],(K[3]<<16)|(K[2]>>>16),K[1],(K[0]<<16)|(K[3]>>>16),K[2],(K[1]<<16)|(K[0]>>>16),K[3],(K[2]<<16)|(K[1]>>>16)];
- var C=this._C=[(K[2]<<16)|(K[2]>>>16),(K[0]&0xffff0000)|(K[1]&0x0000ffff),(K[3]<<16)|(K[3]>>>16),(K[1]&0xffff0000)|(K[2]&0x0000ffff),(K[0]<<16)|(K[0]>>>16),(K[2]&0xffff0000)|(K[3]&0x0000ffff),(K[1]<<16)|(K[1]>>>16),(K[3]&0xffff0000)|(K[0]&0x0000ffff)];
- this._b=0;
- for(var i=0;i<4;i++){
- nextState.call(this);
- }
- for(var i=0;i<8;i++){
- C[i]^=X[(i+4)&7];
- }
- if(iv){
- var IV=iv.words;
- var IV_0=IV[0];
- var IV_1=IV[1];
- var i0=(((IV_0<<8)|(IV_0>>>24))&0x00ff00ff)|(((IV_0<<24)|(IV_0>>>8))&0xff00ff00);
- var i2=(((IV_1<<8)|(IV_1>>>24))&0x00ff00ff)|(((IV_1<<24)|(IV_1>>>8))&0xff00ff00);
- var i1=(i0>>>16)|(i2&0xffff0000);
- var i3=(i2<<16)|(i0&0x0000ffff);
- C[0]^=i0;
- C[1]^=i1;
- C[2]^=i2;
- C[3]^=i3;
- C[4]^=i0;
- C[5]^=i1;
- C[6]^=i2;
- C[7]^=i3;
- for(var i=0;i<4;i++){
- nextState.call(this);
- }
- }
- },
- _doProcessBlock:function(M,offset){
- var X=this._X;
- nextState.call(this);
- S[0]=X[0]^(X[5]>>>16)^(X[3]<<16);
- S[1]=X[2]^(X[7]>>>16)^(X[5]<<16);
- S[2]=X[4]^(X[1]>>>16)^(X[7]<<16);
- S[3]=X[6]^(X[3]>>>16)^(X[1]<<16);
- for(var i=0;i<4;i++){
- S[i]=(((S[i]<<8)|(S[i]>>>24))&0x00ff00ff)|(((S[i]<<24)|(S[i]>>>8))&0xff00ff00);
- M[offset+i]^=S[i];
- }
- },
- blockSize:128/32,
- ivSize:64/32
- });
- function nextState(){
- var X=this._X;
- var C=this._C;
- for(var i=0;i<8;i++){
- C_[i]=C[i];
- }
- C[0]=(C[0]+0x4d34d34d+this._b)|0;
- C[1]=(C[1]+0xd34d34d3+((C[0]>>>0)<(C_[0]>>>0)?1:0))|0;
- C[2]=(C[2]+0x34d34d34+((C[1]>>>0)<(C_[1]>>>0)?1:0))|0;
- C[3]=(C[3]+0x4d34d34d+((C[2]>>>0)<(C_[2]>>>0)?1:0))|0;
- C[4]=(C[4]+0xd34d34d3+((C[3]>>>0)<(C_[3]>>>0)?1:0))|0;
- C[5]=(C[5]+0x34d34d34+((C[4]>>>0)<(C_[4]>>>0)?1:0))|0;
- C[6]=(C[6]+0x4d34d34d+((C[5]>>>0)<(C_[5]>>>0)?1:0))|0;
- C[7]=(C[7]+0xd34d34d3+((C[6]>>>0)<(C_[6]>>>0)?1:0))|0;
- this._b=(C[7]>>>0)<(C_[7]>>>0)?1:0;
- for(var i=0;i<8;i++){
- var gx=X[i]+C[i];
- var ga=gx&0xffff;
- var gb=gx>>>16;
- var gh=((((ga*ga)>>>17)+ga*gb)>>>15)+gb*gb;
- var gl=(((gx&0xffff0000)*gx)|0)+(((gx&0x0000ffff)*gx)|0);
- G[i]=gh^gl;
- }
- X[0]=(G[0]+((G[7]<<16)|(G[7]>>>16))+((G[6]<<16)|(G[6]>>>16)))|0;
- X[1]=(G[1]+((G[0]<<8)|(G[0]>>>24))+G[7])|0;
- X[2]=(G[2]+((G[1]<<16)|(G[1]>>>16))+((G[0]<<16)|(G[0]>>>16)))|0;
- X[3]=(G[3]+((G[2]<<8)|(G[2]>>>24))+G[1])|0;
- X[4]=(G[4]+((G[3]<<16)|(G[3]>>>16))+((G[2]<<16)|(G[2]>>>16)))|0;
- X[5]=(G[5]+((G[4]<<8)|(G[4]>>>24))+G[3])|0;
- X[6]=(G[6]+((G[5]<<16)|(G[5]>>>16))+((G[4]<<16)|(G[4]>>>16)))|0;
- X[7]=(G[7]+((G[6]<<8)|(G[6]>>>24))+G[5])|0;
- }
- C.RabbitLegacy=StreamCipher._createHelper(RabbitLegacy);
- }());
- return CryptoJS;
- }));
|