crypto-js.js 76 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077
  1. ;(function(root,factory){
  2. if(typeof exports==="object"){
  3. module.exports=exports=factory();
  4. }else if(typeof define==="function"&&define.amd){
  5. define([],factory);
  6. }else{
  7. root.CryptoJS=factory();
  8. }
  9. }(this,
  10. function(){
  11. var CryptoJS=CryptoJS||(function(Math,undefined){
  12. var crypto;
  13. if(typeof window!=='undefined'&&window.crypto){
  14. crypto=window.crypto;
  15. }
  16. if(typeof self!=='undefined'&&self.crypto){
  17. crypto=self.crypto;
  18. }
  19. if(typeof globalThis!=='undefined'&&globalThis.crypto){
  20. crypto=globalThis.crypto;
  21. }
  22. if(!crypto&&typeof window!=='undefined'&&window.msCrypto){
  23. crypto=window.msCrypto;
  24. }
  25. if(!crypto&&typeof global!=='undefined'&&global.crypto){
  26. crypto=global.crypto;
  27. }
  28. if(!crypto&&typeof require==='function'){
  29. try{
  30. crypto=require('crypto');
  31. }catch(err){}
  32. }
  33. var cryptoSecureRandomInt=function(){
  34. if(crypto){
  35. if(typeof crypto.getRandomValues==='function'){
  36. try{
  37. return crypto.getRandomValues(new Uint32Array(1))[0];
  38. }catch(err){}
  39. }
  40. if(typeof crypto.randomBytes==='function'){
  41. try{
  42. return crypto.randomBytes(4).readInt32LE();
  43. }catch(err){}
  44. }
  45. }
  46. throw new Error('Native crypto module could not be used to get secure random number.');
  47. };
  48. var create=Object.create||(function(){
  49. function F(){}
  50. return function(obj){
  51. var subtype;
  52. F.prototype=obj;
  53. subtype=new F();
  54. F.prototype=null;
  55. return subtype;
  56. };
  57. }());
  58. var C={};
  59. var C_lib=C.lib={};
  60. var Base=C_lib.Base=(function(){
  61. return{
  62. extend:function(overrides){
  63. var subtype=create(this);
  64. if(overrides){
  65. subtype.mixIn(overrides);
  66. }
  67. if(!subtype.hasOwnProperty('init')||this.init===subtype.init){
  68. subtype.init=function(){
  69. subtype.$super.init.apply(this,arguments);
  70. };
  71. }
  72. subtype.init.prototype=subtype;
  73. subtype.$super=this;
  74. return subtype;
  75. },
  76. create:function(){
  77. var instance=this.extend();
  78. instance.init.apply(instance,arguments);
  79. return instance;
  80. },
  81. init:function(){},
  82. mixIn:function(properties){
  83. for(var propertyName in properties){
  84. if(properties.hasOwnProperty(propertyName)){
  85. this[propertyName]=properties[propertyName];
  86. }
  87. }
  88. if(properties.hasOwnProperty('toString')){
  89. this.toString=properties.toString;
  90. }
  91. },
  92. clone:function(){
  93. return this.init.prototype.extend(this);
  94. }
  95. };
  96. }());
  97. var WordArray=C_lib.WordArray=Base.extend({
  98. init:function(words,sigBytes){
  99. words=this.words=words||[];
  100. if(sigBytes!=undefined){
  101. this.sigBytes=sigBytes;
  102. }else{
  103. this.sigBytes=words.length*4;
  104. }
  105. },
  106. toString:function(encoder){
  107. return(encoder||Hex).stringify(this);
  108. },
  109. concat:function(wordArray){
  110. var thisWords=this.words;
  111. var thatWords=wordArray.words;
  112. var thisSigBytes=this.sigBytes;
  113. var thatSigBytes=wordArray.sigBytes;
  114. this.clamp();
  115. if(thisSigBytes%4){
  116. for(var i=0;i<thatSigBytes;i++){
  117. var thatByte=(thatWords[i>>>2]>>>(24-(i%4)*8))&0xff;
  118. thisWords[(thisSigBytes+i)>>>2]|=thatByte<<(24-((thisSigBytes+i)%4)*8);
  119. }
  120. }else{
  121. for(var j=0;j<thatSigBytes;j+=4){
  122. thisWords[(thisSigBytes+j)>>>2]=thatWords[j>>>2];
  123. }
  124. }
  125. this.sigBytes+=thatSigBytes;
  126. return this;
  127. },
  128. clamp:function(){
  129. var words=this.words;
  130. var sigBytes=this.sigBytes;
  131. words[sigBytes>>>2]&=0xffffffff<<(32-(sigBytes%4)*8);
  132. words.length=Math.ceil(sigBytes/4);
  133. },
  134. clone:function(){
  135. var clone=Base.clone.call(this);
  136. clone.words=this.words.slice(0);
  137. return clone;
  138. },
  139. random:function(nBytes){
  140. var words=[];
  141. for(var i=0;i<nBytes;i+=4){
  142. words.push(cryptoSecureRandomInt());
  143. }
  144. return new WordArray.init(words,nBytes);
  145. }
  146. });
  147. var C_enc=C.enc={};
  148. var Hex=C_enc.Hex={
  149. stringify:function(wordArray){
  150. var words=wordArray.words;
  151. var sigBytes=wordArray.sigBytes;
  152. var hexChars=[];
  153. for(var i=0;i<sigBytes;i++){
  154. var bite=(words[i>>>2]>>>(24-(i%4)*8))&0xff;
  155. hexChars.push((bite>>>4).toString(16));
  156. hexChars.push((bite&0x0f).toString(16));
  157. }
  158. return hexChars.join('');
  159. },
  160. parse:function(hexStr){
  161. var hexStrLength=hexStr.length;
  162. var words=[];
  163. for(var i=0;i<hexStrLength;i+=2){
  164. words[i>>>3]|=parseInt(hexStr.substr(i,2),16)<<(24-(i%8)*4);
  165. }
  166. return new WordArray.init(words,hexStrLength/2);
  167. }
  168. };
  169. var Latin1=C_enc.Latin1={
  170. stringify:function(wordArray){
  171. var words=wordArray.words;
  172. var sigBytes=wordArray.sigBytes;
  173. var latin1Chars=[];
  174. for(var i=0;i<sigBytes;i++){
  175. var bite=(words[i>>>2]>>>(24-(i%4)*8))&0xff;
  176. latin1Chars.push(String.fromCharCode(bite));
  177. }
  178. return latin1Chars.join('');
  179. },
  180. parse:function(latin1Str){
  181. var latin1StrLength=latin1Str.length;
  182. var words=[];
  183. for(var i=0;i<latin1StrLength;i++){
  184. words[i>>>2]|=(latin1Str.charCodeAt(i)&0xff)<<(24-(i%4)*8);
  185. }
  186. return new WordArray.init(words,latin1StrLength);
  187. }
  188. };
  189. var Utf8=C_enc.Utf8={
  190. stringify:function(wordArray){
  191. try{
  192. return decodeURIComponent(escape(Latin1.stringify(wordArray)));
  193. }catch(e){
  194. throw new Error('Malformed UTF-8 data');
  195. }
  196. },
  197. parse:function(utf8Str){
  198. return Latin1.parse(unescape(encodeURIComponent(utf8Str)));
  199. }
  200. };
  201. var BufferedBlockAlgorithm=C_lib.BufferedBlockAlgorithm=Base.extend({
  202. reset:function(){
  203. this._data=new WordArray.init();
  204. this._nDataBytes=0;
  205. },
  206. _append:function(data){
  207. if(typeof data=='string'){
  208. data=Utf8.parse(data);
  209. }
  210. this._data.concat(data);
  211. this._nDataBytes+=data.sigBytes;
  212. },
  213. _process:function(doFlush){
  214. var processedWords;
  215. var data=this._data;
  216. var dataWords=data.words;
  217. var dataSigBytes=data.sigBytes;
  218. var blockSize=this.blockSize;
  219. var blockSizeBytes=blockSize*4;
  220. var nBlocksReady=dataSigBytes/blockSizeBytes;
  221. if(doFlush){
  222. nBlocksReady=Math.ceil(nBlocksReady);
  223. }else{
  224. nBlocksReady=Math.max((nBlocksReady|0)-this._minBufferSize,0);
  225. }
  226. var nWordsReady=nBlocksReady*blockSize;
  227. var nBytesReady=Math.min(nWordsReady*4,dataSigBytes);
  228. if(nWordsReady){
  229. for(var offset=0;offset<nWordsReady;offset+=blockSize){
  230. this._doProcessBlock(dataWords,offset);
  231. }
  232. processedWords=dataWords.splice(0,nWordsReady);
  233. data.sigBytes-=nBytesReady;
  234. }
  235. return new WordArray.init(processedWords,nBytesReady);
  236. },
  237. clone:function(){
  238. var clone=Base.clone.call(this);
  239. clone._data=this._data.clone();
  240. return clone;
  241. },
  242. _minBufferSize:0
  243. });
  244. var Hasher=C_lib.Hasher=BufferedBlockAlgorithm.extend({
  245. cfg:Base.extend(),
  246. init:function(cfg){
  247. this.cfg=this.cfg.extend(cfg);
  248. this.reset();
  249. },
  250. reset:function(){
  251. BufferedBlockAlgorithm.reset.call(this);
  252. this._doReset();
  253. },
  254. update:function(messageUpdate){
  255. this._append(messageUpdate);
  256. this._process();
  257. return this;
  258. },
  259. finalize:function(messageUpdate){
  260. if(messageUpdate){
  261. this._append(messageUpdate);
  262. }
  263. var hash=this._doFinalize();
  264. return hash;
  265. },
  266. blockSize:512/32,
  267. _createHelper:function(hasher){
  268. return function(message,cfg){
  269. return new hasher.init(cfg).finalize(message);
  270. };
  271. },
  272. _createHmacHelper:function(hasher){
  273. return function(message,key){
  274. return new C_algo.HMAC.init(hasher,key).finalize(message);
  275. };
  276. }
  277. });
  278. var C_algo=C.algo={};
  279. return C;
  280. }(Math));
  281. (function(undefined){
  282. var C=CryptoJS;
  283. var C_lib=C.lib;
  284. var Base=C_lib.Base;
  285. var X32WordArray=C_lib.WordArray;
  286. var C_x64=C.x64={};
  287. var X64Word=C_x64.Word=Base.extend({
  288. init:function(high,low){
  289. this.high=high;
  290. this.low=low;
  291. }
  292. });
  293. var X64WordArray=C_x64.WordArray=Base.extend({
  294. init:function(words,sigBytes){
  295. words=this.words=words||[];
  296. if(sigBytes!=undefined){
  297. this.sigBytes=sigBytes;
  298. }else{
  299. this.sigBytes=words.length*8;
  300. }
  301. },
  302. toX32:function(){
  303. var x64Words=this.words;
  304. var x64WordsLength=x64Words.length;
  305. var x32Words=[];
  306. for(var i=0;i<x64WordsLength;i++){
  307. var x64Word=x64Words[i];
  308. x32Words.push(x64Word.high);
  309. x32Words.push(x64Word.low);
  310. }
  311. return X32WordArray.create(x32Words,this.sigBytes);
  312. },
  313. clone:function(){
  314. var clone=Base.clone.call(this);
  315. var words=clone.words=this.words.slice(0);
  316. var wordsLength=words.length;
  317. for(var i=0;i<wordsLength;i++){
  318. words[i]=words[i].clone();
  319. }
  320. return clone;
  321. }
  322. });
  323. }());
  324. (function(){
  325. if(typeof ArrayBuffer!='function'){
  326. return;
  327. }
  328. var C=CryptoJS;
  329. var C_lib=C.lib;
  330. var WordArray=C_lib.WordArray;
  331. var superInit=WordArray.init;
  332. var subInit=WordArray.init=function(typedArray){
  333. if(typedArray instanceof ArrayBuffer){
  334. typedArray=new Uint8Array(typedArray);
  335. }
  336. 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){
  337. typedArray=new Uint8Array(typedArray.buffer,typedArray.byteOffset,typedArray.byteLength);
  338. }
  339. if(typedArray instanceof Uint8Array){
  340. var typedArrayByteLength=typedArray.byteLength;
  341. var words=[];
  342. for(var i=0;i<typedArrayByteLength;i++){
  343. words[i>>>2]|=typedArray[i]<<(24-(i%4)*8);
  344. }
  345. superInit.call(this,words,typedArrayByteLength);
  346. }else{
  347. superInit.apply(this,arguments);
  348. }
  349. };
  350. subInit.prototype=WordArray;
  351. }());
  352. (function(){
  353. var C=CryptoJS;
  354. var C_lib=C.lib;
  355. var WordArray=C_lib.WordArray;
  356. var C_enc=C.enc;
  357. var Utf16BE=C_enc.Utf16=C_enc.Utf16BE={
  358. stringify:function(wordArray){
  359. var words=wordArray.words;
  360. var sigBytes=wordArray.sigBytes;
  361. var utf16Chars=[];
  362. for(var i=0;i<sigBytes;i+=2){
  363. var codePoint=(words[i>>>2]>>>(16-(i%4)*8))&0xffff;
  364. utf16Chars.push(String.fromCharCode(codePoint));
  365. }
  366. return utf16Chars.join('');
  367. },
  368. parse:function(utf16Str){
  369. var utf16StrLength=utf16Str.length;
  370. var words=[];
  371. for(var i=0;i<utf16StrLength;i++){
  372. words[i>>>1]|=utf16Str.charCodeAt(i)<<(16-(i%2)*16);
  373. }
  374. return WordArray.create(words,utf16StrLength*2);
  375. }
  376. };
  377. C_enc.Utf16LE={
  378. stringify:function(wordArray){
  379. var words=wordArray.words;
  380. var sigBytes=wordArray.sigBytes;
  381. var utf16Chars=[];
  382. for(var i=0;i<sigBytes;i+=2){
  383. var codePoint=swapEndian((words[i>>>2]>>>(16-(i%4)*8))&0xffff);
  384. utf16Chars.push(String.fromCharCode(codePoint));
  385. }
  386. return utf16Chars.join('');
  387. },
  388. parse:function(utf16Str){
  389. var utf16StrLength=utf16Str.length;
  390. var words=[];
  391. for(var i=0;i<utf16StrLength;i++){
  392. words[i>>>1]|=swapEndian(utf16Str.charCodeAt(i)<<(16-(i%2)*16));
  393. }
  394. return WordArray.create(words,utf16StrLength*2);
  395. }
  396. };
  397. function swapEndian(word){
  398. return((word<<8)&0xff00ff00)|((word>>>8)&0x00ff00ff);
  399. }
  400. }());
  401. (function(){
  402. var C=CryptoJS;
  403. var C_lib=C.lib;
  404. var WordArray=C_lib.WordArray;
  405. var C_enc=C.enc;
  406. var Base64=C_enc.Base64={
  407. stringify:function(wordArray){
  408. var words=wordArray.words;
  409. var sigBytes=wordArray.sigBytes;
  410. var map=this._map;
  411. wordArray.clamp();
  412. var base64Chars=[];
  413. for(var i=0;i<sigBytes;i+=3){
  414. var byte1=(words[i>>>2]>>>(24-(i%4)*8))&0xff;
  415. var byte2=(words[(i+1)>>>2]>>>(24-((i+1)%4)*8))&0xff;
  416. var byte3=(words[(i+2)>>>2]>>>(24-((i+2)%4)*8))&0xff;
  417. var triplet=(byte1<<16)|(byte2<<8)|byte3;
  418. for(var j=0;(j<4)&&(i+j*0.75<sigBytes);j++){
  419. base64Chars.push(map.charAt((triplet>>>(6*(3-j)))&0x3f));
  420. }
  421. }
  422. var paddingChar=map.charAt(64);
  423. if(paddingChar){
  424. while(base64Chars.length%4){
  425. base64Chars.push(paddingChar);
  426. }
  427. }
  428. return base64Chars.join('');
  429. },
  430. parse:function(base64Str){
  431. var base64StrLength=base64Str.length;
  432. var map=this._map;
  433. var reverseMap=this._reverseMap;
  434. if(!reverseMap){
  435. reverseMap=this._reverseMap=[];
  436. for(var j=0;j<map.length;j++){
  437. reverseMap[map.charCodeAt(j)]=j;
  438. }
  439. }
  440. var paddingChar=map.charAt(64);
  441. if(paddingChar){
  442. var paddingIndex=base64Str.indexOf(paddingChar);
  443. if(paddingIndex!==-1){
  444. base64StrLength=paddingIndex;
  445. }
  446. }
  447. return parseLoop(base64Str,base64StrLength,reverseMap);
  448. },
  449. _map:'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
  450. };
  451. function parseLoop(base64Str,base64StrLength,reverseMap){
  452. var words=[];
  453. var nBytes=0;
  454. for(var i=0;i<base64StrLength;i++){
  455. if(i%4){
  456. var bits1=reverseMap[base64Str.charCodeAt(i-1)]<<((i%4)*2);
  457. var bits2=reverseMap[base64Str.charCodeAt(i)]>>>(6-(i%4)*2);
  458. var bitsCombined=bits1|bits2;
  459. words[nBytes>>>2]|=bitsCombined<<(24-(nBytes%4)*8);
  460. nBytes++;
  461. }
  462. }
  463. return WordArray.create(words,nBytes);
  464. }
  465. }());
  466. (function(){
  467. var C=CryptoJS;
  468. var C_lib=C.lib;
  469. var WordArray=C_lib.WordArray;
  470. var C_enc=C.enc;
  471. var Base64url=C_enc.Base64url={
  472. stringify:function(wordArray,urlSafe=true){
  473. var words=wordArray.words;
  474. var sigBytes=wordArray.sigBytes;
  475. var map=urlSafe?this._safe_map:this._map;
  476. wordArray.clamp();
  477. var base64Chars=[];
  478. for(var i=0;i<sigBytes;i+=3){
  479. var byte1=(words[i>>>2]>>>(24-(i%4)*8))&0xff;
  480. var byte2=(words[(i+1)>>>2]>>>(24-((i+1)%4)*8))&0xff;
  481. var byte3=(words[(i+2)>>>2]>>>(24-((i+2)%4)*8))&0xff;
  482. var triplet=(byte1<<16)|(byte2<<8)|byte3;
  483. for(var j=0;(j<4)&&(i+j*0.75<sigBytes);j++){
  484. base64Chars.push(map.charAt((triplet>>>(6*(3-j)))&0x3f));
  485. }
  486. }
  487. var paddingChar=map.charAt(64);
  488. if(paddingChar){
  489. while(base64Chars.length%4){
  490. base64Chars.push(paddingChar);
  491. }
  492. }
  493. return base64Chars.join('');
  494. },
  495. parse:function(base64Str,urlSafe=true){
  496. var base64StrLength=base64Str.length;
  497. var map=urlSafe?this._safe_map:this._map;
  498. var reverseMap=this._reverseMap;
  499. if(!reverseMap){
  500. reverseMap=this._reverseMap=[];
  501. for(var j=0;j<map.length;j++){
  502. reverseMap[map.charCodeAt(j)]=j;
  503. }
  504. }
  505. var paddingChar=map.charAt(64);
  506. if(paddingChar){
  507. var paddingIndex=base64Str.indexOf(paddingChar);
  508. if(paddingIndex!==-1){
  509. base64StrLength=paddingIndex;
  510. }
  511. }
  512. return parseLoop(base64Str,base64StrLength,reverseMap);
  513. },
  514. _map:'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',
  515. _safe_map:'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',
  516. };
  517. function parseLoop(base64Str,base64StrLength,reverseMap){
  518. var words=[];
  519. var nBytes=0;
  520. for(var i=0;i<base64StrLength;i++){
  521. if(i%4){
  522. var bits1=reverseMap[base64Str.charCodeAt(i-1)]<<((i%4)*2);
  523. var bits2=reverseMap[base64Str.charCodeAt(i)]>>>(6-(i%4)*2);
  524. var bitsCombined=bits1|bits2;
  525. words[nBytes>>>2]|=bitsCombined<<(24-(nBytes%4)*8);
  526. nBytes++;
  527. }
  528. }
  529. return WordArray.create(words,nBytes);
  530. }
  531. }());
  532. (function(Math){
  533. var C=CryptoJS;
  534. var C_lib=C.lib;
  535. var WordArray=C_lib.WordArray;
  536. var Hasher=C_lib.Hasher;
  537. var C_algo=C.algo;
  538. var T=[];
  539. (function(){
  540. for(var i=0;i<64;i++){
  541. T[i]=(Math.abs(Math.sin(i+1))*0x100000000)|0;
  542. }
  543. }());
  544. var MD5=C_algo.MD5=Hasher.extend({
  545. _doReset:function(){
  546. this._hash=new WordArray.init([0x67452301,0xefcdab89,0x98badcfe,0x10325476]);
  547. },
  548. _doProcessBlock:function(M,offset){
  549. for(var i=0;i<16;i++){
  550. var offset_i=offset+i;
  551. var M_offset_i=M[offset_i];
  552. M[offset_i]=((((M_offset_i<<8)|(M_offset_i>>>24))&0x00ff00ff)|(((M_offset_i<<24)|(M_offset_i>>>8))&0xff00ff00));
  553. }
  554. var H=this._hash.words;
  555. var M_offset_0=M[offset+0];
  556. var M_offset_1=M[offset+1];
  557. var M_offset_2=M[offset+2];
  558. var M_offset_3=M[offset+3];
  559. var M_offset_4=M[offset+4];
  560. var M_offset_5=M[offset+5];
  561. var M_offset_6=M[offset+6];
  562. var M_offset_7=M[offset+7];
  563. var M_offset_8=M[offset+8];
  564. var M_offset_9=M[offset+9];
  565. var M_offset_10=M[offset+10];
  566. var M_offset_11=M[offset+11];
  567. var M_offset_12=M[offset+12];
  568. var M_offset_13=M[offset+13];
  569. var M_offset_14=M[offset+14];
  570. var M_offset_15=M[offset+15];
  571. var a=H[0];
  572. var b=H[1];
  573. var c=H[2];
  574. var d=H[3];
  575. a=FF(a,b,c,d,M_offset_0,7,T[0]);
  576. d=FF(d,a,b,c,M_offset_1,12,T[1]);
  577. c=FF(c,d,a,b,M_offset_2,17,T[2]);
  578. b=FF(b,c,d,a,M_offset_3,22,T[3]);
  579. a=FF(a,b,c,d,M_offset_4,7,T[4]);
  580. d=FF(d,a,b,c,M_offset_5,12,T[5]);
  581. c=FF(c,d,a,b,M_offset_6,17,T[6]);
  582. b=FF(b,c,d,a,M_offset_7,22,T[7]);
  583. a=FF(a,b,c,d,M_offset_8,7,T[8]);
  584. d=FF(d,a,b,c,M_offset_9,12,T[9]);
  585. c=FF(c,d,a,b,M_offset_10,17,T[10]);
  586. b=FF(b,c,d,a,M_offset_11,22,T[11]);
  587. a=FF(a,b,c,d,M_offset_12,7,T[12]);
  588. d=FF(d,a,b,c,M_offset_13,12,T[13]);
  589. c=FF(c,d,a,b,M_offset_14,17,T[14]);
  590. b=FF(b,c,d,a,M_offset_15,22,T[15]);
  591. a=GG(a,b,c,d,M_offset_1,5,T[16]);
  592. d=GG(d,a,b,c,M_offset_6,9,T[17]);
  593. c=GG(c,d,a,b,M_offset_11,14,T[18]);
  594. b=GG(b,c,d,a,M_offset_0,20,T[19]);
  595. a=GG(a,b,c,d,M_offset_5,5,T[20]);
  596. d=GG(d,a,b,c,M_offset_10,9,T[21]);
  597. c=GG(c,d,a,b,M_offset_15,14,T[22]);
  598. b=GG(b,c,d,a,M_offset_4,20,T[23]);
  599. a=GG(a,b,c,d,M_offset_9,5,T[24]);
  600. d=GG(d,a,b,c,M_offset_14,9,T[25]);
  601. c=GG(c,d,a,b,M_offset_3,14,T[26]);
  602. b=GG(b,c,d,a,M_offset_8,20,T[27]);
  603. a=GG(a,b,c,d,M_offset_13,5,T[28]);
  604. d=GG(d,a,b,c,M_offset_2,9,T[29]);
  605. c=GG(c,d,a,b,M_offset_7,14,T[30]);
  606. b=GG(b,c,d,a,M_offset_12,20,T[31]);
  607. a=HH(a,b,c,d,M_offset_5,4,T[32]);
  608. d=HH(d,a,b,c,M_offset_8,11,T[33]);
  609. c=HH(c,d,a,b,M_offset_11,16,T[34]);
  610. b=HH(b,c,d,a,M_offset_14,23,T[35]);
  611. a=HH(a,b,c,d,M_offset_1,4,T[36]);
  612. d=HH(d,a,b,c,M_offset_4,11,T[37]);
  613. c=HH(c,d,a,b,M_offset_7,16,T[38]);
  614. b=HH(b,c,d,a,M_offset_10,23,T[39]);
  615. a=HH(a,b,c,d,M_offset_13,4,T[40]);
  616. d=HH(d,a,b,c,M_offset_0,11,T[41]);
  617. c=HH(c,d,a,b,M_offset_3,16,T[42]);
  618. b=HH(b,c,d,a,M_offset_6,23,T[43]);
  619. a=HH(a,b,c,d,M_offset_9,4,T[44]);
  620. d=HH(d,a,b,c,M_offset_12,11,T[45]);
  621. c=HH(c,d,a,b,M_offset_15,16,T[46]);
  622. b=HH(b,c,d,a,M_offset_2,23,T[47]);
  623. a=II(a,b,c,d,M_offset_0,6,T[48]);
  624. d=II(d,a,b,c,M_offset_7,10,T[49]);
  625. c=II(c,d,a,b,M_offset_14,15,T[50]);
  626. b=II(b,c,d,a,M_offset_5,21,T[51]);
  627. a=II(a,b,c,d,M_offset_12,6,T[52]);
  628. d=II(d,a,b,c,M_offset_3,10,T[53]);
  629. c=II(c,d,a,b,M_offset_10,15,T[54]);
  630. b=II(b,c,d,a,M_offset_1,21,T[55]);
  631. a=II(a,b,c,d,M_offset_8,6,T[56]);
  632. d=II(d,a,b,c,M_offset_15,10,T[57]);
  633. c=II(c,d,a,b,M_offset_6,15,T[58]);
  634. b=II(b,c,d,a,M_offset_13,21,T[59]);
  635. a=II(a,b,c,d,M_offset_4,6,T[60]);
  636. d=II(d,a,b,c,M_offset_11,10,T[61]);
  637. c=II(c,d,a,b,M_offset_2,15,T[62]);
  638. b=II(b,c,d,a,M_offset_9,21,T[63]);
  639. H[0]=(H[0]+a)|0;
  640. H[1]=(H[1]+b)|0;
  641. H[2]=(H[2]+c)|0;
  642. H[3]=(H[3]+d)|0;
  643. },
  644. _doFinalize:function(){
  645. var data=this._data;
  646. var dataWords=data.words;
  647. var nBitsTotal=this._nDataBytes*8;
  648. var nBitsLeft=data.sigBytes*8;
  649. dataWords[nBitsLeft>>>5]|=0x80<<(24-nBitsLeft%32);
  650. var nBitsTotalH=Math.floor(nBitsTotal/0x100000000);
  651. var nBitsTotalL=nBitsTotal;
  652. dataWords[(((nBitsLeft+64)>>>9)<<4)+15]=((((nBitsTotalH<<8)|(nBitsTotalH>>>24))&0x00ff00ff)|(((nBitsTotalH<<24)|(nBitsTotalH>>>8))&0xff00ff00));
  653. dataWords[(((nBitsLeft+64)>>>9)<<4)+14]=((((nBitsTotalL<<8)|(nBitsTotalL>>>24))&0x00ff00ff)|(((nBitsTotalL<<24)|(nBitsTotalL>>>8))&0xff00ff00));
  654. data.sigBytes=(dataWords.length+1)*4;
  655. this._process();
  656. var hash=this._hash;
  657. var H=hash.words;
  658. for(var i=0;i<4;i++){
  659. var H_i=H[i];
  660. H[i]=(((H_i<<8)|(H_i>>>24))&0x00ff00ff)|(((H_i<<24)|(H_i>>>8))&0xff00ff00);
  661. }
  662. return hash;
  663. },
  664. clone:function(){
  665. var clone=Hasher.clone.call(this);
  666. clone._hash=this._hash.clone();
  667. return clone;
  668. }
  669. });
  670. function FF(a,b,c,d,x,s,t){
  671. var n=a+((b&c)|(~b&d))+x+t;
  672. return((n<<s)|(n>>>(32-s)))+b;
  673. }
  674. function GG(a,b,c,d,x,s,t){
  675. var n=a+((b&d)|(c&~d))+x+t;
  676. return((n<<s)|(n>>>(32-s)))+b;
  677. }
  678. function HH(a,b,c,d,x,s,t){
  679. var n=a+(b^c^d)+x+t;
  680. return((n<<s)|(n>>>(32-s)))+b;
  681. }
  682. function II(a,b,c,d,x,s,t){
  683. var n=a+(c^(b|~d))+x+t;
  684. return((n<<s)|(n>>>(32-s)))+b;
  685. }
  686. C.MD5=Hasher._createHelper(MD5);
  687. C.HmacMD5=Hasher._createHmacHelper(MD5);
  688. }(Math));
  689. (function(){
  690. var C=CryptoJS;
  691. var C_lib=C.lib;
  692. var WordArray=C_lib.WordArray;
  693. var Hasher=C_lib.Hasher;
  694. var C_algo=C.algo;
  695. var W=[];
  696. var SHA1=C_algo.SHA1=Hasher.extend({
  697. _doReset:function(){
  698. this._hash=new WordArray.init([0x67452301,0xefcdab89,0x98badcfe,0x10325476,0xc3d2e1f0]);
  699. },
  700. _doProcessBlock:function(M,offset){
  701. var H=this._hash.words;
  702. var a=H[0];
  703. var b=H[1];
  704. var c=H[2];
  705. var d=H[3];
  706. var e=H[4];
  707. for(var i=0;i<80;i++){
  708. if(i<16){
  709. W[i]=M[offset+i]|0;
  710. }else{
  711. var n=W[i-3]^W[i-8]^W[i-14]^W[i-16];
  712. W[i]=(n<<1)|(n>>>31);
  713. }
  714. var t=((a<<5)|(a>>>27))+e+W[i];
  715. if(i<20){
  716. t+=((b&c)|(~b&d))+0x5a827999;
  717. }else if(i<40){
  718. t+=(b^c^d)+0x6ed9eba1;
  719. }else if(i<60){
  720. t+=((b&c)|(b&d)|(c&d))-0x70e44324;
  721. }else
  722. {
  723. t+=(b^c^d)-0x359d3e2a;
  724. }
  725. e=d;
  726. d=c;
  727. c=(b<<30)|(b>>>2);
  728. b=a;
  729. a=t;
  730. }
  731. H[0]=(H[0]+a)|0;
  732. H[1]=(H[1]+b)|0;
  733. H[2]=(H[2]+c)|0;
  734. H[3]=(H[3]+d)|0;
  735. H[4]=(H[4]+e)|0;
  736. },
  737. _doFinalize:function(){
  738. var data=this._data;
  739. var dataWords=data.words;
  740. var nBitsTotal=this._nDataBytes*8;
  741. var nBitsLeft=data.sigBytes*8;
  742. dataWords[nBitsLeft>>>5]|=0x80<<(24-nBitsLeft%32);
  743. dataWords[(((nBitsLeft+64)>>>9)<<4)+14]=Math.floor(nBitsTotal/0x100000000);
  744. dataWords[(((nBitsLeft+64)>>>9)<<4)+15]=nBitsTotal;
  745. data.sigBytes=dataWords.length*4;
  746. this._process();
  747. return this._hash;
  748. },
  749. clone:function(){
  750. var clone=Hasher.clone.call(this);
  751. clone._hash=this._hash.clone();
  752. return clone;
  753. }
  754. });
  755. C.SHA1=Hasher._createHelper(SHA1);
  756. C.HmacSHA1=Hasher._createHmacHelper(SHA1);
  757. }());
  758. (function(Math){
  759. var C=CryptoJS;
  760. var C_lib=C.lib;
  761. var WordArray=C_lib.WordArray;
  762. var Hasher=C_lib.Hasher;
  763. var C_algo=C.algo;
  764. var H=[];
  765. var K=[];
  766. (function(){
  767. function isPrime(n){
  768. var sqrtN=Math.sqrt(n);
  769. for(var factor=2;factor<=sqrtN;factor++){
  770. if(!(n%factor)){
  771. return false;
  772. }
  773. }
  774. return true;
  775. }
  776. function getFractionalBits(n){
  777. return((n-(n|0))*0x100000000)|0;
  778. }
  779. var n=2;
  780. var nPrime=0;
  781. while(nPrime<64){
  782. if(isPrime(n)){
  783. if(nPrime<8){
  784. H[nPrime]=getFractionalBits(Math.pow(n,1/2));
  785. }
  786. K[nPrime]=getFractionalBits(Math.pow(n,1/3));
  787. nPrime++;
  788. }
  789. n++;
  790. }
  791. }());
  792. var W=[];
  793. var SHA256=C_algo.SHA256=Hasher.extend({
  794. _doReset:function(){
  795. this._hash=new WordArray.init(H.slice(0));
  796. },
  797. _doProcessBlock:function(M,offset){
  798. var H=this._hash.words;
  799. var a=H[0];
  800. var b=H[1];
  801. var c=H[2];
  802. var d=H[3];
  803. var e=H[4];
  804. var f=H[5];
  805. var g=H[6];
  806. var h=H[7];
  807. for(var i=0;i<64;i++){
  808. if(i<16){
  809. W[i]=M[offset+i]|0;
  810. }else{
  811. var gamma0x=W[i-15];
  812. var gamma0=((gamma0x<<25)|(gamma0x>>>7))^((gamma0x<<14)|(gamma0x>>>18))^(gamma0x>>>3);
  813. var gamma1x=W[i-2];
  814. var gamma1=((gamma1x<<15)|(gamma1x>>>17))^((gamma1x<<13)|(gamma1x>>>19))^(gamma1x>>>10);
  815. W[i]=gamma0+W[i-7]+gamma1+W[i-16];
  816. }
  817. var ch=(e&f)^(~e&g);
  818. var maj=(a&b)^(a&c)^(b&c);
  819. var sigma0=((a<<30)|(a>>>2))^((a<<19)|(a>>>13))^((a<<10)|(a>>>22));
  820. var sigma1=((e<<26)|(e>>>6))^((e<<21)|(e>>>11))^((e<<7)|(e>>>25));
  821. var t1=h+sigma1+ch+K[i]+W[i];
  822. var t2=sigma0+maj;
  823. h=g;
  824. g=f;
  825. f=e;
  826. e=(d+t1)|0;
  827. d=c;
  828. c=b;
  829. b=a;
  830. a=(t1+t2)|0;
  831. }
  832. H[0]=(H[0]+a)|0;
  833. H[1]=(H[1]+b)|0;
  834. H[2]=(H[2]+c)|0;
  835. H[3]=(H[3]+d)|0;
  836. H[4]=(H[4]+e)|0;
  837. H[5]=(H[5]+f)|0;
  838. H[6]=(H[6]+g)|0;
  839. H[7]=(H[7]+h)|0;
  840. },
  841. _doFinalize:function(){
  842. var data=this._data;
  843. var dataWords=data.words;
  844. var nBitsTotal=this._nDataBytes*8;
  845. var nBitsLeft=data.sigBytes*8;
  846. dataWords[nBitsLeft>>>5]|=0x80<<(24-nBitsLeft%32);
  847. dataWords[(((nBitsLeft+64)>>>9)<<4)+14]=Math.floor(nBitsTotal/0x100000000);
  848. dataWords[(((nBitsLeft+64)>>>9)<<4)+15]=nBitsTotal;
  849. data.sigBytes=dataWords.length*4;
  850. this._process();
  851. return this._hash;
  852. },
  853. clone:function(){
  854. var clone=Hasher.clone.call(this);
  855. clone._hash=this._hash.clone();
  856. return clone;
  857. }
  858. });
  859. C.SHA256=Hasher._createHelper(SHA256);
  860. C.HmacSHA256=Hasher._createHmacHelper(SHA256);
  861. }(Math));
  862. (function(){
  863. var C=CryptoJS;
  864. var C_lib=C.lib;
  865. var WordArray=C_lib.WordArray;
  866. var C_algo=C.algo;
  867. var SHA256=C_algo.SHA256;
  868. var SHA224=C_algo.SHA224=SHA256.extend({
  869. _doReset:function(){
  870. this._hash=new WordArray.init([0xc1059ed8,0x367cd507,0x3070dd17,0xf70e5939,0xffc00b31,0x68581511,0x64f98fa7,0xbefa4fa4]);
  871. },
  872. _doFinalize:function(){
  873. var hash=SHA256._doFinalize.call(this);
  874. hash.sigBytes-=4;
  875. return hash;
  876. }
  877. });
  878. C.SHA224=SHA256._createHelper(SHA224);
  879. C.HmacSHA224=SHA256._createHmacHelper(SHA224);
  880. }());
  881. (function(){
  882. var C=CryptoJS;
  883. var C_lib=C.lib;
  884. var Hasher=C_lib.Hasher;
  885. var C_x64=C.x64;
  886. var X64Word=C_x64.Word;
  887. var X64WordArray=C_x64.WordArray;
  888. var C_algo=C.algo;
  889. function X64Word_create(){
  890. return X64Word.create.apply(X64Word,arguments);
  891. }
  892. 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)];
  893. var W=[];(function(){
  894. for(var i=0;i<80;i++){
  895. W[i]=X64Word_create();
  896. }
  897. }());
  898. var SHA512=C_algo.SHA512=Hasher.extend({
  899. _doReset:function(){
  900. 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)]);
  901. },
  902. _doProcessBlock:function(M,offset){
  903. var H=this._hash.words;
  904. var H0=H[0];
  905. var H1=H[1];
  906. var H2=H[2];
  907. var H3=H[3];
  908. var H4=H[4];
  909. var H5=H[5];
  910. var H6=H[6];
  911. var H7=H[7];
  912. var H0h=H0.high;
  913. var H0l=H0.low;
  914. var H1h=H1.high;
  915. var H1l=H1.low;
  916. var H2h=H2.high;
  917. var H2l=H2.low;
  918. var H3h=H3.high;
  919. var H3l=H3.low;
  920. var H4h=H4.high;
  921. var H4l=H4.low;
  922. var H5h=H5.high;
  923. var H5l=H5.low;
  924. var H6h=H6.high;
  925. var H6l=H6.low;
  926. var H7h=H7.high;
  927. var H7l=H7.low;
  928. var ah=H0h;
  929. var al=H0l;
  930. var bh=H1h;
  931. var bl=H1l;
  932. var ch=H2h;
  933. var cl=H2l;
  934. var dh=H3h;
  935. var dl=H3l;
  936. var eh=H4h;
  937. var el=H4l;
  938. var fh=H5h;
  939. var fl=H5l;
  940. var gh=H6h;
  941. var gl=H6l;
  942. var hh=H7h;
  943. var hl=H7l;
  944. for(var i=0;i<80;i++){
  945. var Wil;
  946. var Wih;
  947. var Wi=W[i];
  948. if(i<16){
  949. Wih=Wi.high=M[offset+i*2]|0;
  950. Wil=Wi.low=M[offset+i*2+1]|0;
  951. }else{
  952. var gamma0x=W[i-15];
  953. var gamma0xh=gamma0x.high;
  954. var gamma0xl=gamma0x.low;
  955. var gamma0h=((gamma0xh>>>1)|(gamma0xl<<31))^((gamma0xh>>>8)|(gamma0xl<<24))^(gamma0xh>>>7);
  956. var gamma0l=((gamma0xl>>>1)|(gamma0xh<<31))^((gamma0xl>>>8)|(gamma0xh<<24))^((gamma0xl>>>7)|(gamma0xh<<25));
  957. var gamma1x=W[i-2];
  958. var gamma1xh=gamma1x.high;
  959. var gamma1xl=gamma1x.low;
  960. var gamma1h=((gamma1xh>>>19)|(gamma1xl<<13))^((gamma1xh<<3)|(gamma1xl>>>29))^(gamma1xh>>>6);
  961. var gamma1l=((gamma1xl>>>19)|(gamma1xh<<13))^((gamma1xl<<3)|(gamma1xh>>>29))^((gamma1xl>>>6)|(gamma1xh<<26));
  962. var Wi7=W[i-7];
  963. var Wi7h=Wi7.high;
  964. var Wi7l=Wi7.low;
  965. var Wi16=W[i-16];
  966. var Wi16h=Wi16.high;
  967. var Wi16l=Wi16.low;
  968. Wil=gamma0l+Wi7l;
  969. Wih=gamma0h+Wi7h+((Wil>>>0)<(gamma0l>>>0)?1:0);
  970. Wil=Wil+gamma1l;
  971. Wih=Wih+gamma1h+((Wil>>>0)<(gamma1l>>>0)?1:0);
  972. Wil=Wil+Wi16l;
  973. Wih=Wih+Wi16h+((Wil>>>0)<(Wi16l>>>0)?1:0);
  974. Wi.high=Wih;
  975. Wi.low=Wil;
  976. }
  977. var chh=(eh&fh)^(~eh&gh);
  978. var chl=(el&fl)^(~el&gl);
  979. var majh=(ah&bh)^(ah&ch)^(bh&ch);
  980. var majl=(al&bl)^(al&cl)^(bl&cl);
  981. var sigma0h=((ah>>>28)|(al<<4))^((ah<<30)|(al>>>2))^((ah<<25)|(al>>>7));
  982. var sigma0l=((al>>>28)|(ah<<4))^((al<<30)|(ah>>>2))^((al<<25)|(ah>>>7));
  983. var sigma1h=((eh>>>14)|(el<<18))^((eh>>>18)|(el<<14))^((eh<<23)|(el>>>9));
  984. var sigma1l=((el>>>14)|(eh<<18))^((el>>>18)|(eh<<14))^((el<<23)|(eh>>>9));
  985. var Ki=K[i];
  986. var Kih=Ki.high;
  987. var Kil=Ki.low;
  988. var t1l=hl+sigma1l;
  989. var t1h=hh+sigma1h+((t1l>>>0)<(hl>>>0)?1:0);
  990. var t1l=t1l+chl;
  991. var t1h=t1h+chh+((t1l>>>0)<(chl>>>0)?1:0);
  992. var t1l=t1l+Kil;
  993. var t1h=t1h+Kih+((t1l>>>0)<(Kil>>>0)?1:0);
  994. var t1l=t1l+Wil;
  995. var t1h=t1h+Wih+((t1l>>>0)<(Wil>>>0)?1:0);
  996. var t2l=sigma0l+majl;
  997. var t2h=sigma0h+majh+((t2l>>>0)<(sigma0l>>>0)?1:0);
  998. hh=gh;
  999. hl=gl;
  1000. gh=fh;
  1001. gl=fl;
  1002. fh=eh;
  1003. fl=el;
  1004. el=(dl+t1l)|0;
  1005. eh=(dh+t1h+((el>>>0)<(dl>>>0)?1:0))|0;
  1006. dh=ch;
  1007. dl=cl;
  1008. ch=bh;
  1009. cl=bl;
  1010. bh=ah;
  1011. bl=al;
  1012. al=(t1l+t2l)|0;
  1013. ah=(t1h+t2h+((al>>>0)<(t1l>>>0)?1:0))|0;
  1014. }
  1015. H0l=H0.low=(H0l+al);
  1016. H0.high=(H0h+ah+((H0l>>>0)<(al>>>0)?1:0));
  1017. H1l=H1.low=(H1l+bl);
  1018. H1.high=(H1h+bh+((H1l>>>0)<(bl>>>0)?1:0));
  1019. H2l=H2.low=(H2l+cl);
  1020. H2.high=(H2h+ch+((H2l>>>0)<(cl>>>0)?1:0));
  1021. H3l=H3.low=(H3l+dl);
  1022. H3.high=(H3h+dh+((H3l>>>0)<(dl>>>0)?1:0));
  1023. H4l=H4.low=(H4l+el);
  1024. H4.high=(H4h+eh+((H4l>>>0)<(el>>>0)?1:0));
  1025. H5l=H5.low=(H5l+fl);
  1026. H5.high=(H5h+fh+((H5l>>>0)<(fl>>>0)?1:0));
  1027. H6l=H6.low=(H6l+gl);
  1028. H6.high=(H6h+gh+((H6l>>>0)<(gl>>>0)?1:0));
  1029. H7l=H7.low=(H7l+hl);
  1030. H7.high=(H7h+hh+((H7l>>>0)<(hl>>>0)?1:0));
  1031. },
  1032. _doFinalize:function(){
  1033. var data=this._data;
  1034. var dataWords=data.words;
  1035. var nBitsTotal=this._nDataBytes*8;
  1036. var nBitsLeft=data.sigBytes*8;
  1037. dataWords[nBitsLeft>>>5]|=0x80<<(24-nBitsLeft%32);
  1038. dataWords[(((nBitsLeft+128)>>>10)<<5)+30]=Math.floor(nBitsTotal/0x100000000);
  1039. dataWords[(((nBitsLeft+128)>>>10)<<5)+31]=nBitsTotal;
  1040. data.sigBytes=dataWords.length*4;
  1041. this._process();
  1042. var hash=this._hash.toX32();
  1043. return hash;
  1044. },
  1045. clone:function(){
  1046. var clone=Hasher.clone.call(this);
  1047. clone._hash=this._hash.clone();
  1048. return clone;
  1049. },
  1050. blockSize:1024/32
  1051. });
  1052. C.SHA512=Hasher._createHelper(SHA512);
  1053. C.HmacSHA512=Hasher._createHmacHelper(SHA512);
  1054. }());
  1055. (function(){
  1056. var C=CryptoJS;
  1057. var C_x64=C.x64;
  1058. var X64Word=C_x64.Word;
  1059. var X64WordArray=C_x64.WordArray;
  1060. var C_algo=C.algo;
  1061. var SHA512=C_algo.SHA512;
  1062. var SHA384=C_algo.SHA384=SHA512.extend({
  1063. _doReset:function(){
  1064. 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)]);
  1065. },
  1066. _doFinalize:function(){
  1067. var hash=SHA512._doFinalize.call(this);
  1068. hash.sigBytes-=16;
  1069. return hash;
  1070. }
  1071. });
  1072. C.SHA384=SHA512._createHelper(SHA384);
  1073. C.HmacSHA384=SHA512._createHmacHelper(SHA384);
  1074. }());
  1075. (function(Math){
  1076. var C=CryptoJS;
  1077. var C_lib=C.lib;
  1078. var WordArray=C_lib.WordArray;
  1079. var Hasher=C_lib.Hasher;
  1080. var C_x64=C.x64;
  1081. var X64Word=C_x64.Word;
  1082. var C_algo=C.algo;
  1083. var RHO_OFFSETS=[];
  1084. var PI_INDEXES=[];
  1085. var ROUND_CONSTANTS=[];
  1086. (function(){
  1087. var x=1,
  1088. y=0;
  1089. for(var t=0;t<24;t++){
  1090. RHO_OFFSETS[x+5*y]=((t+1)*(t+2)/2)%64;
  1091. var newX=y%5;
  1092. var newY=(2*x+3*y)%5;
  1093. x=newX;
  1094. y=newY;
  1095. }
  1096. for(var x=0;x<5;x++){
  1097. for(var y=0;y<5;y++){
  1098. PI_INDEXES[x+5*y]=y+((2*x+3*y)%5)*5;
  1099. }
  1100. }
  1101. var LFSR=0x01;
  1102. for(var i=0;i<24;i++){
  1103. var roundConstantMsw=0;
  1104. var roundConstantLsw=0;
  1105. for(var j=0;j<7;j++){
  1106. if(LFSR&0x01){
  1107. var bitPosition=(1<<j)-1;
  1108. if(bitPosition<32){
  1109. roundConstantLsw^=1<<bitPosition;
  1110. }else
  1111. {
  1112. roundConstantMsw^=1<<(bitPosition-32);
  1113. }
  1114. }
  1115. if(LFSR&0x80){
  1116. LFSR=(LFSR<<1)^0x71;
  1117. }else{
  1118. LFSR<<=1;
  1119. }
  1120. }
  1121. ROUND_CONSTANTS[i]=X64Word.create(roundConstantMsw,roundConstantLsw);
  1122. }
  1123. }());
  1124. var T=[];(function(){
  1125. for(var i=0;i<25;i++){
  1126. T[i]=X64Word.create();
  1127. }
  1128. }());
  1129. var SHA3=C_algo.SHA3=Hasher.extend({
  1130. cfg:Hasher.cfg.extend({
  1131. outputLength:512
  1132. }),
  1133. _doReset:function(){
  1134. var state=this._state=[]
  1135. for(var i=0;i<25;i++){
  1136. state[i]=new X64Word.init();
  1137. }
  1138. this.blockSize=(1600-2*this.cfg.outputLength)/32;
  1139. },
  1140. _doProcessBlock:function(M,offset){
  1141. var state=this._state;
  1142. var nBlockSizeLanes=this.blockSize/2;
  1143. for(var i=0;i<nBlockSizeLanes;i++){
  1144. var M2i=M[offset+2*i];
  1145. var M2i1=M[offset+2*i+1];
  1146. M2i=((((M2i<<8)|(M2i>>>24))&0x00ff00ff)|(((M2i<<24)|(M2i>>>8))&0xff00ff00));
  1147. M2i1=((((M2i1<<8)|(M2i1>>>24))&0x00ff00ff)|(((M2i1<<24)|(M2i1>>>8))&0xff00ff00));
  1148. var lane=state[i];
  1149. lane.high^=M2i1;
  1150. lane.low^=M2i;
  1151. }
  1152. for(var round=0;round<24;round++){
  1153. for(var x=0;x<5;x++){
  1154. var tMsw=0,
  1155. tLsw=0;
  1156. for(var y=0;y<5;y++){
  1157. var lane=state[x+5*y];
  1158. tMsw^=lane.high;
  1159. tLsw^=lane.low;
  1160. }
  1161. var Tx=T[x];
  1162. Tx.high=tMsw;
  1163. Tx.low=tLsw;
  1164. }
  1165. for(var x=0;x<5;x++){
  1166. var Tx4=T[(x+4)%5];
  1167. var Tx1=T[(x+1)%5];
  1168. var Tx1Msw=Tx1.high;
  1169. var Tx1Lsw=Tx1.low;
  1170. var tMsw=Tx4.high^((Tx1Msw<<1)|(Tx1Lsw>>>31));
  1171. var tLsw=Tx4.low^((Tx1Lsw<<1)|(Tx1Msw>>>31));
  1172. for(var y=0;y<5;y++){
  1173. var lane=state[x+5*y];
  1174. lane.high^=tMsw;
  1175. lane.low^=tLsw;
  1176. }
  1177. }
  1178. for(var laneIndex=1;laneIndex<25;laneIndex++){
  1179. var tMsw;
  1180. var tLsw;
  1181. var lane=state[laneIndex];
  1182. var laneMsw=lane.high;
  1183. var laneLsw=lane.low;
  1184. var rhoOffset=RHO_OFFSETS[laneIndex];
  1185. if(rhoOffset<32){
  1186. tMsw=(laneMsw<<rhoOffset)|(laneLsw>>>(32-rhoOffset));
  1187. tLsw=(laneLsw<<rhoOffset)|(laneMsw>>>(32-rhoOffset));
  1188. }else
  1189. {
  1190. tMsw=(laneLsw<<(rhoOffset-32))|(laneMsw>>>(64-rhoOffset));
  1191. tLsw=(laneMsw<<(rhoOffset-32))|(laneLsw>>>(64-rhoOffset));
  1192. }
  1193. var TPiLane=T[PI_INDEXES[laneIndex]];
  1194. TPiLane.high=tMsw;
  1195. TPiLane.low=tLsw;
  1196. }
  1197. var T0=T[0];
  1198. var state0=state[0];
  1199. T0.high=state0.high;
  1200. T0.low=state0.low;
  1201. for(var x=0;x<5;x++){
  1202. for(var y=0;y<5;y++){
  1203. var laneIndex=x+5*y;
  1204. var lane=state[laneIndex];
  1205. var TLane=T[laneIndex];
  1206. var Tx1Lane=T[((x+1)%5)+5*y];
  1207. var Tx2Lane=T[((x+2)%5)+5*y];
  1208. lane.high=TLane.high^(~Tx1Lane.high&Tx2Lane.high);
  1209. lane.low=TLane.low^(~Tx1Lane.low&Tx2Lane.low);
  1210. }
  1211. }
  1212. var lane=state[0];
  1213. var roundConstant=ROUND_CONSTANTS[round];
  1214. lane.high^=roundConstant.high;
  1215. lane.low^=roundConstant.low;
  1216. }
  1217. },
  1218. _doFinalize:function(){
  1219. var data=this._data;
  1220. var dataWords=data.words;
  1221. var nBitsTotal=this._nDataBytes*8;
  1222. var nBitsLeft=data.sigBytes*8;
  1223. var blockSizeBits=this.blockSize*32;
  1224. dataWords[nBitsLeft>>>5]|=0x1<<(24-nBitsLeft%32);
  1225. dataWords[((Math.ceil((nBitsLeft+1)/blockSizeBits)*blockSizeBits)>>>5)-1]|=0x80;
  1226. data.sigBytes=dataWords.length*4;
  1227. this._process();
  1228. var state=this._state;
  1229. var outputLengthBytes=this.cfg.outputLength/8;
  1230. var outputLengthLanes=outputLengthBytes/8;
  1231. var hashWords=[];
  1232. for(var i=0;i<outputLengthLanes;i++){
  1233. var lane=state[i];
  1234. var laneMsw=lane.high;
  1235. var laneLsw=lane.low;
  1236. laneMsw=((((laneMsw<<8)|(laneMsw>>>24))&0x00ff00ff)|(((laneMsw<<24)|(laneMsw>>>8))&0xff00ff00));
  1237. laneLsw=((((laneLsw<<8)|(laneLsw>>>24))&0x00ff00ff)|(((laneLsw<<24)|(laneLsw>>>8))&0xff00ff00));
  1238. hashWords.push(laneLsw);
  1239. hashWords.push(laneMsw);
  1240. }
  1241. return new WordArray.init(hashWords,outputLengthBytes);
  1242. },
  1243. clone:function(){
  1244. var clone=Hasher.clone.call(this);
  1245. var state=clone._state=this._state.slice(0);
  1246. for(var i=0;i<25;i++){
  1247. state[i]=state[i].clone();
  1248. }
  1249. return clone;
  1250. }
  1251. });
  1252. C.SHA3=Hasher._createHelper(SHA3);
  1253. C.HmacSHA3=Hasher._createHmacHelper(SHA3);
  1254. }(Math));
  1255. (function(Math){
  1256. var C=CryptoJS;
  1257. var C_lib=C.lib;
  1258. var WordArray=C_lib.WordArray;
  1259. var Hasher=C_lib.Hasher;
  1260. var C_algo=C.algo;
  1261. 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]);
  1262. 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]);
  1263. 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]);
  1264. 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]);
  1265. var _hl=WordArray.create([0x00000000,0x5A827999,0x6ED9EBA1,0x8F1BBCDC,0xA953FD4E]);
  1266. var _hr=WordArray.create([0x50A28BE6,0x5C4DD124,0x6D703EF3,0x7A6D76E9,0x00000000]);
  1267. var RIPEMD160=C_algo.RIPEMD160=Hasher.extend({
  1268. _doReset:function(){
  1269. this._hash=WordArray.create([0x67452301,0xEFCDAB89,0x98BADCFE,0x10325476,0xC3D2E1F0]);
  1270. },
  1271. _doProcessBlock:function(M,offset){
  1272. for(var i=0;i<16;i++){
  1273. var offset_i=offset+i;
  1274. var M_offset_i=M[offset_i];
  1275. M[offset_i]=((((M_offset_i<<8)|(M_offset_i>>>24))&0x00ff00ff)|(((M_offset_i<<24)|(M_offset_i>>>8))&0xff00ff00));
  1276. }
  1277. var H=this._hash.words;
  1278. var hl=_hl.words;
  1279. var hr=_hr.words;
  1280. var zl=_zl.words;
  1281. var zr=_zr.words;
  1282. var sl=_sl.words;
  1283. var sr=_sr.words;
  1284. var al,bl,cl,dl,el;
  1285. var ar,br,cr,dr,er;
  1286. ar=al=H[0];
  1287. br=bl=H[1];
  1288. cr=cl=H[2];
  1289. dr=dl=H[3];
  1290. er=el=H[4];
  1291. var t;
  1292. for(var i=0;i<80;i+=1){
  1293. t=(al+M[offset+zl[i]])|0;
  1294. if(i<16){
  1295. t+=f1(bl,cl,dl)+hl[0];
  1296. }else if(i<32){
  1297. t+=f2(bl,cl,dl)+hl[1];
  1298. }else if(i<48){
  1299. t+=f3(bl,cl,dl)+hl[2];
  1300. }else if(i<64){
  1301. t+=f4(bl,cl,dl)+hl[3];
  1302. }else{
  1303. t+=f5(bl,cl,dl)+hl[4];
  1304. }
  1305. t=t|0;
  1306. t=rotl(t,sl[i]);
  1307. t=(t+el)|0;
  1308. al=el;
  1309. el=dl;
  1310. dl=rotl(cl,10);
  1311. cl=bl;
  1312. bl=t;
  1313. t=(ar+M[offset+zr[i]])|0;
  1314. if(i<16){
  1315. t+=f5(br,cr,dr)+hr[0];
  1316. }else if(i<32){
  1317. t+=f4(br,cr,dr)+hr[1];
  1318. }else if(i<48){
  1319. t+=f3(br,cr,dr)+hr[2];
  1320. }else if(i<64){
  1321. t+=f2(br,cr,dr)+hr[3];
  1322. }else{
  1323. t+=f1(br,cr,dr)+hr[4];
  1324. }
  1325. t=t|0;
  1326. t=rotl(t,sr[i]);
  1327. t=(t+er)|0;
  1328. ar=er;
  1329. er=dr;
  1330. dr=rotl(cr,10);
  1331. cr=br;
  1332. br=t;
  1333. }
  1334. t=(H[1]+cl+dr)|0;
  1335. H[1]=(H[2]+dl+er)|0;
  1336. H[2]=(H[3]+el+ar)|0;
  1337. H[3]=(H[4]+al+br)|0;
  1338. H[4]=(H[0]+bl+cr)|0;
  1339. H[0]=t;
  1340. },
  1341. _doFinalize:function(){
  1342. var data=this._data;
  1343. var dataWords=data.words;
  1344. var nBitsTotal=this._nDataBytes*8;
  1345. var nBitsLeft=data.sigBytes*8;
  1346. dataWords[nBitsLeft>>>5]|=0x80<<(24-nBitsLeft%32);
  1347. dataWords[(((nBitsLeft+64)>>>9)<<4)+14]=((((nBitsTotal<<8)|(nBitsTotal>>>24))&0x00ff00ff)|(((nBitsTotal<<24)|(nBitsTotal>>>8))&0xff00ff00));
  1348. data.sigBytes=(dataWords.length+1)*4;
  1349. this._process();
  1350. var hash=this._hash;
  1351. var H=hash.words;
  1352. for(var i=0;i<5;i++){
  1353. var H_i=H[i];
  1354. H[i]=(((H_i<<8)|(H_i>>>24))&0x00ff00ff)|(((H_i<<24)|(H_i>>>8))&0xff00ff00);
  1355. }
  1356. return hash;
  1357. },
  1358. clone:function(){
  1359. var clone=Hasher.clone.call(this);
  1360. clone._hash=this._hash.clone();
  1361. return clone;
  1362. }
  1363. });
  1364. function f1(x,y,z){
  1365. return((x)^(y)^(z));
  1366. }
  1367. function f2(x,y,z){
  1368. return(((x)&(y))|((~x)&(z)));
  1369. }
  1370. function f3(x,y,z){
  1371. return(((x)|(~(y)))^(z));
  1372. }
  1373. function f4(x,y,z){
  1374. return(((x)&(z))|((y)&(~(z))));
  1375. }
  1376. function f5(x,y,z){
  1377. return((x)^((y)|(~(z))));
  1378. }
  1379. function rotl(x,n){
  1380. return(x<<n)|(x>>>(32-n));
  1381. }
  1382. C.RIPEMD160=Hasher._createHelper(RIPEMD160);
  1383. C.HmacRIPEMD160=Hasher._createHmacHelper(RIPEMD160);
  1384. }(Math));
  1385. (function(){
  1386. var C=CryptoJS;
  1387. var C_lib=C.lib;
  1388. var Base=C_lib.Base;
  1389. var C_enc=C.enc;
  1390. var Utf8=C_enc.Utf8;
  1391. var C_algo=C.algo;
  1392. var HMAC=C_algo.HMAC=Base.extend({
  1393. init:function(hasher,key){
  1394. hasher=this._hasher=new hasher.init();
  1395. if(typeof key=='string'){
  1396. key=Utf8.parse(key);
  1397. }
  1398. var hasherBlockSize=hasher.blockSize;
  1399. var hasherBlockSizeBytes=hasherBlockSize*4;
  1400. if(key.sigBytes>hasherBlockSizeBytes){
  1401. key=hasher.finalize(key);
  1402. }
  1403. key.clamp();
  1404. var oKey=this._oKey=key.clone();
  1405. var iKey=this._iKey=key.clone();
  1406. var oKeyWords=oKey.words;
  1407. var iKeyWords=iKey.words;
  1408. for(var i=0;i<hasherBlockSize;i++){
  1409. oKeyWords[i]^=0x5c5c5c5c;
  1410. iKeyWords[i]^=0x36363636;
  1411. }
  1412. oKey.sigBytes=iKey.sigBytes=hasherBlockSizeBytes;
  1413. this.reset();
  1414. },
  1415. reset:function(){
  1416. var hasher=this._hasher;
  1417. hasher.reset();
  1418. hasher.update(this._iKey);
  1419. },
  1420. update:function(messageUpdate){
  1421. this._hasher.update(messageUpdate);
  1422. return this;
  1423. },
  1424. finalize:function(messageUpdate){
  1425. var hasher=this._hasher;
  1426. var innerHash=hasher.finalize(messageUpdate);
  1427. hasher.reset();
  1428. var hmac=hasher.finalize(this._oKey.clone().concat(innerHash));
  1429. return hmac;
  1430. }
  1431. });
  1432. }());
  1433. (function(){
  1434. var C=CryptoJS;
  1435. var C_lib=C.lib;
  1436. var Base=C_lib.Base;
  1437. var WordArray=C_lib.WordArray;
  1438. var C_algo=C.algo;
  1439. var SHA1=C_algo.SHA1;
  1440. var HMAC=C_algo.HMAC;
  1441. var PBKDF2=C_algo.PBKDF2=Base.extend({
  1442. cfg:Base.extend({
  1443. keySize:128/32,
  1444. hasher:SHA1,
  1445. iterations:1
  1446. }),
  1447. init:function(cfg){
  1448. this.cfg=this.cfg.extend(cfg);
  1449. },
  1450. compute:function(password,salt){
  1451. var cfg=this.cfg;
  1452. var hmac=HMAC.create(cfg.hasher,password);
  1453. var derivedKey=WordArray.create();
  1454. var blockIndex=WordArray.create([0x00000001]);
  1455. var derivedKeyWords=derivedKey.words;
  1456. var blockIndexWords=blockIndex.words;
  1457. var keySize=cfg.keySize;
  1458. var iterations=cfg.iterations;
  1459. while(derivedKeyWords.length<keySize){
  1460. var block=hmac.update(salt).finalize(blockIndex);
  1461. hmac.reset();
  1462. var blockWords=block.words;
  1463. var blockWordsLength=blockWords.length;
  1464. var intermediate=block;
  1465. for(var i=1;i<iterations;i++){
  1466. intermediate=hmac.finalize(intermediate);
  1467. hmac.reset();
  1468. var intermediateWords=intermediate.words;
  1469. for(var j=0;j<blockWordsLength;j++){
  1470. blockWords[j]^=intermediateWords[j];
  1471. }
  1472. }
  1473. derivedKey.concat(block);
  1474. blockIndexWords[0]++;
  1475. }
  1476. derivedKey.sigBytes=keySize*4;
  1477. return derivedKey;
  1478. }
  1479. });
  1480. C.PBKDF2=function(password,salt,cfg){
  1481. return PBKDF2.create(cfg).compute(password,salt);
  1482. };
  1483. }());
  1484. (function(){
  1485. var C=CryptoJS;
  1486. var C_lib=C.lib;
  1487. var Base=C_lib.Base;
  1488. var WordArray=C_lib.WordArray;
  1489. var C_algo=C.algo;
  1490. var MD5=C_algo.MD5;
  1491. var EvpKDF=C_algo.EvpKDF=Base.extend({
  1492. cfg:Base.extend({
  1493. keySize:128/32,
  1494. hasher:MD5,
  1495. iterations:1
  1496. }),
  1497. init:function(cfg){
  1498. this.cfg=this.cfg.extend(cfg);
  1499. },
  1500. compute:function(password,salt){
  1501. var block;
  1502. var cfg=this.cfg;
  1503. var hasher=cfg.hasher.create();
  1504. var derivedKey=WordArray.create();
  1505. var derivedKeyWords=derivedKey.words;
  1506. var keySize=cfg.keySize;
  1507. var iterations=cfg.iterations;
  1508. while(derivedKeyWords.length<keySize){
  1509. if(block){
  1510. hasher.update(block);
  1511. }
  1512. block=hasher.update(password).finalize(salt);
  1513. hasher.reset();
  1514. for(var i=1;i<iterations;i++){
  1515. block=hasher.finalize(block);
  1516. hasher.reset();
  1517. }
  1518. derivedKey.concat(block);
  1519. }
  1520. derivedKey.sigBytes=keySize*4;
  1521. return derivedKey;
  1522. }
  1523. });
  1524. C.EvpKDF=function(password,salt,cfg){
  1525. return EvpKDF.create(cfg).compute(password,salt);
  1526. };
  1527. }());
  1528. CryptoJS.lib.Cipher||(function(undefined){
  1529. var C=CryptoJS;
  1530. var C_lib=C.lib;
  1531. var Base=C_lib.Base;
  1532. var WordArray=C_lib.WordArray;
  1533. var BufferedBlockAlgorithm=C_lib.BufferedBlockAlgorithm;
  1534. var C_enc=C.enc;
  1535. var Utf8=C_enc.Utf8;
  1536. var Base64=C_enc.Base64;
  1537. var C_algo=C.algo;
  1538. var EvpKDF=C_algo.EvpKDF;
  1539. var Cipher=C_lib.Cipher=BufferedBlockAlgorithm.extend({
  1540. cfg:Base.extend(),
  1541. createEncryptor:function(key,cfg){
  1542. return this.create(this._ENC_XFORM_MODE,key,cfg);
  1543. },
  1544. createDecryptor:function(key,cfg){
  1545. return this.create(this._DEC_XFORM_MODE,key,cfg);
  1546. },
  1547. init:function(xformMode,key,cfg){
  1548. this.cfg=this.cfg.extend(cfg);
  1549. this._xformMode=xformMode;
  1550. this._key=key;
  1551. this.reset();
  1552. },
  1553. reset:function(){
  1554. BufferedBlockAlgorithm.reset.call(this);
  1555. this._doReset();
  1556. },
  1557. process:function(dataUpdate){
  1558. this._append(dataUpdate);
  1559. return this._process();
  1560. },
  1561. finalize:function(dataUpdate){
  1562. if(dataUpdate){
  1563. this._append(dataUpdate);
  1564. }
  1565. var finalProcessedData=this._doFinalize();
  1566. return finalProcessedData;
  1567. },
  1568. keySize:128/32,
  1569. ivSize:128/32,
  1570. _ENC_XFORM_MODE:1,
  1571. _DEC_XFORM_MODE:2,
  1572. _createHelper:(function(){
  1573. function selectCipherStrategy(key){
  1574. if(typeof key=='string'){
  1575. return PasswordBasedCipher;
  1576. }else{
  1577. return SerializableCipher;
  1578. }
  1579. }
  1580. return function(cipher){
  1581. return{
  1582. encrypt:function(message,key,cfg){
  1583. return selectCipherStrategy(key).encrypt(cipher,message,key,cfg);
  1584. },
  1585. decrypt:function(ciphertext,key,cfg){
  1586. return selectCipherStrategy(key).decrypt(cipher,ciphertext,key,cfg);
  1587. }
  1588. };
  1589. };
  1590. }())
  1591. });
  1592. var StreamCipher=C_lib.StreamCipher=Cipher.extend({
  1593. _doFinalize:function(){
  1594. var finalProcessedBlocks=this._process(!!'flush');
  1595. return finalProcessedBlocks;
  1596. },
  1597. blockSize:1
  1598. });
  1599. var C_mode=C.mode={};
  1600. var BlockCipherMode=C_lib.BlockCipherMode=Base.extend({
  1601. createEncryptor:function(cipher,iv){
  1602. return this.Encryptor.create(cipher,iv);
  1603. },
  1604. createDecryptor:function(cipher,iv){
  1605. return this.Decryptor.create(cipher,iv);
  1606. },
  1607. init:function(cipher,iv){
  1608. this._cipher=cipher;
  1609. this._iv=iv;
  1610. }
  1611. });
  1612. var CBC=C_mode.CBC=(function(){
  1613. var CBC=BlockCipherMode.extend();
  1614. CBC.Encryptor=CBC.extend({
  1615. processBlock:function(words,offset){
  1616. var cipher=this._cipher;
  1617. var blockSize=cipher.blockSize;
  1618. xorBlock.call(this,words,offset,blockSize);
  1619. cipher.encryptBlock(words,offset);
  1620. this._prevBlock=words.slice(offset,offset+blockSize);
  1621. }
  1622. });
  1623. CBC.Decryptor=CBC.extend({
  1624. processBlock:function(words,offset){
  1625. var cipher=this._cipher;
  1626. var blockSize=cipher.blockSize;
  1627. var thisBlock=words.slice(offset,offset+blockSize);
  1628. cipher.decryptBlock(words,offset);
  1629. xorBlock.call(this,words,offset,blockSize);
  1630. this._prevBlock=thisBlock;
  1631. }
  1632. });
  1633. function xorBlock(words,offset,blockSize){
  1634. var block;
  1635. var iv=this._iv;
  1636. if(iv){
  1637. block=iv;
  1638. this._iv=undefined;
  1639. }else{
  1640. block=this._prevBlock;
  1641. }
  1642. for(var i=0;i<blockSize;i++){
  1643. words[offset+i]^=block[i];
  1644. }
  1645. }
  1646. return CBC;
  1647. }());
  1648. var C_pad=C.pad={};
  1649. var Pkcs7=C_pad.Pkcs7={
  1650. pad:function(data,blockSize){
  1651. var blockSizeBytes=blockSize*4;
  1652. var nPaddingBytes=blockSizeBytes-data.sigBytes%blockSizeBytes;
  1653. var paddingWord=(nPaddingBytes<<24)|(nPaddingBytes<<16)|(nPaddingBytes<<8)|nPaddingBytes;
  1654. var paddingWords=[];
  1655. for(var i=0;i<nPaddingBytes;i+=4){
  1656. paddingWords.push(paddingWord);
  1657. }
  1658. var padding=WordArray.create(paddingWords,nPaddingBytes);
  1659. data.concat(padding);
  1660. },
  1661. unpad:function(data){
  1662. var nPaddingBytes=data.words[(data.sigBytes-1)>>>2]&0xff;
  1663. data.sigBytes-=nPaddingBytes;
  1664. }
  1665. };
  1666. var BlockCipher=C_lib.BlockCipher=Cipher.extend({
  1667. cfg:Cipher.cfg.extend({
  1668. mode:CBC,
  1669. padding:Pkcs7
  1670. }),
  1671. reset:function(){
  1672. var modeCreator;
  1673. Cipher.reset.call(this);
  1674. var cfg=this.cfg;
  1675. var iv=cfg.iv;
  1676. var mode=cfg.mode;
  1677. if(this._xformMode==this._ENC_XFORM_MODE){
  1678. modeCreator=mode.createEncryptor;
  1679. }else
  1680. {
  1681. modeCreator=mode.createDecryptor;
  1682. this._minBufferSize=1;
  1683. }
  1684. if(this._mode&&this._mode.__creator==modeCreator){
  1685. this._mode.init(this,iv&&iv.words);
  1686. }else{
  1687. this._mode=modeCreator.call(mode,this,iv&&iv.words);
  1688. this._mode.__creator=modeCreator;
  1689. }
  1690. },
  1691. _doProcessBlock:function(words,offset){
  1692. this._mode.processBlock(words,offset);
  1693. },
  1694. _doFinalize:function(){
  1695. var finalProcessedBlocks;
  1696. var padding=this.cfg.padding;
  1697. if(this._xformMode==this._ENC_XFORM_MODE){
  1698. padding.pad(this._data,this.blockSize);
  1699. finalProcessedBlocks=this._process(!!'flush');
  1700. }else
  1701. {
  1702. finalProcessedBlocks=this._process(!!'flush');
  1703. padding.unpad(finalProcessedBlocks);
  1704. }
  1705. return finalProcessedBlocks;
  1706. },
  1707. blockSize:128/32
  1708. });
  1709. var CipherParams=C_lib.CipherParams=Base.extend({
  1710. init:function(cipherParams){
  1711. this.mixIn(cipherParams);
  1712. },
  1713. toString:function(formatter){
  1714. return(formatter||this.formatter).stringify(this);
  1715. }
  1716. });
  1717. var C_format=C.format={};
  1718. var OpenSSLFormatter=C_format.OpenSSL={
  1719. stringify:function(cipherParams){
  1720. var wordArray;
  1721. var ciphertext=cipherParams.ciphertext;
  1722. var salt=cipherParams.salt;
  1723. if(salt){
  1724. wordArray=WordArray.create([0x53616c74,0x65645f5f]).concat(salt).concat(ciphertext);
  1725. }else{
  1726. wordArray=ciphertext;
  1727. }
  1728. return wordArray.toString(Base64);
  1729. },
  1730. parse:function(openSSLStr){
  1731. var salt;
  1732. var ciphertext=Base64.parse(openSSLStr);
  1733. var ciphertextWords=ciphertext.words;
  1734. if(ciphertextWords[0]==0x53616c74&&ciphertextWords[1]==0x65645f5f){
  1735. salt=WordArray.create(ciphertextWords.slice(2,4));
  1736. ciphertextWords.splice(0,4);
  1737. ciphertext.sigBytes-=16;
  1738. }
  1739. return CipherParams.create({
  1740. ciphertext:ciphertext,
  1741. salt:salt
  1742. });
  1743. }
  1744. };
  1745. var SerializableCipher=C_lib.SerializableCipher=Base.extend({
  1746. cfg:Base.extend({
  1747. format:OpenSSLFormatter
  1748. }),
  1749. encrypt:function(cipher,message,key,cfg){
  1750. cfg=this.cfg.extend(cfg);
  1751. var encryptor=cipher.createEncryptor(key,cfg);
  1752. var ciphertext=encryptor.finalize(message);
  1753. var cipherCfg=encryptor.cfg;
  1754. return CipherParams.create({
  1755. ciphertext:ciphertext,
  1756. key:key,
  1757. iv:cipherCfg.iv,
  1758. algorithm:cipher,
  1759. mode:cipherCfg.mode,
  1760. padding:cipherCfg.padding,
  1761. blockSize:cipher.blockSize,
  1762. formatter:cfg.format
  1763. });
  1764. },
  1765. decrypt:function(cipher,ciphertext,key,cfg){
  1766. cfg=this.cfg.extend(cfg);
  1767. ciphertext=this._parse(ciphertext,cfg.format);
  1768. var plaintext=cipher.createDecryptor(key,cfg).finalize(ciphertext.ciphertext);
  1769. return plaintext;
  1770. },
  1771. _parse:function(ciphertext,format){
  1772. if(typeof ciphertext=='string'){
  1773. return format.parse(ciphertext,this);
  1774. }else{
  1775. return ciphertext;
  1776. }
  1777. }
  1778. });
  1779. var C_kdf=C.kdf={};
  1780. var OpenSSLKdf=C_kdf.OpenSSL={
  1781. execute:function(password,keySize,ivSize,salt){
  1782. if(!salt){
  1783. salt=WordArray.random(64/8);
  1784. }
  1785. var key=EvpKDF.create({
  1786. keySize:keySize+ivSize
  1787. }).compute(password,salt);
  1788. var iv=WordArray.create(key.words.slice(keySize),ivSize*4);
  1789. key.sigBytes=keySize*4;
  1790. return CipherParams.create({
  1791. key:key,
  1792. iv:iv,
  1793. salt:salt
  1794. });
  1795. }
  1796. };
  1797. var PasswordBasedCipher=C_lib.PasswordBasedCipher=SerializableCipher.extend({
  1798. cfg:SerializableCipher.cfg.extend({
  1799. kdf:OpenSSLKdf
  1800. }),
  1801. encrypt:function(cipher,message,password,cfg){
  1802. cfg=this.cfg.extend(cfg);
  1803. var derivedParams=cfg.kdf.execute(password,cipher.keySize,cipher.ivSize);
  1804. cfg.iv=derivedParams.iv;
  1805. var ciphertext=SerializableCipher.encrypt.call(this,cipher,message,derivedParams.key,cfg);
  1806. ciphertext.mixIn(derivedParams);
  1807. return ciphertext;
  1808. },
  1809. decrypt:function(cipher,ciphertext,password,cfg){
  1810. cfg=this.cfg.extend(cfg);
  1811. ciphertext=this._parse(ciphertext,cfg.format);
  1812. var derivedParams=cfg.kdf.execute(password,cipher.keySize,cipher.ivSize,ciphertext.salt);
  1813. cfg.iv=derivedParams.iv;
  1814. var plaintext=SerializableCipher.decrypt.call(this,cipher,ciphertext,derivedParams.key,cfg);
  1815. return plaintext;
  1816. }
  1817. });
  1818. }());
  1819. CryptoJS.mode.CFB=(function(){
  1820. var CFB=CryptoJS.lib.BlockCipherMode.extend();
  1821. CFB.Encryptor=CFB.extend({
  1822. processBlock:function(words,offset){
  1823. var cipher=this._cipher;
  1824. var blockSize=cipher.blockSize;
  1825. generateKeystreamAndEncrypt.call(this,words,offset,blockSize,cipher);
  1826. this._prevBlock=words.slice(offset,offset+blockSize);
  1827. }
  1828. });
  1829. CFB.Decryptor=CFB.extend({
  1830. processBlock:function(words,offset){
  1831. var cipher=this._cipher;
  1832. var blockSize=cipher.blockSize;
  1833. var thisBlock=words.slice(offset,offset+blockSize);
  1834. generateKeystreamAndEncrypt.call(this,words,offset,blockSize,cipher);
  1835. this._prevBlock=thisBlock;
  1836. }
  1837. });
  1838. function generateKeystreamAndEncrypt(words,offset,blockSize,cipher){
  1839. var keystream;
  1840. var iv=this._iv;
  1841. if(iv){
  1842. keystream=iv.slice(0);
  1843. this._iv=undefined;
  1844. }else{
  1845. keystream=this._prevBlock;
  1846. }
  1847. cipher.encryptBlock(keystream,0);
  1848. for(var i=0;i<blockSize;i++){
  1849. words[offset+i]^=keystream[i];
  1850. }
  1851. }
  1852. return CFB;
  1853. }());
  1854. CryptoJS.mode.CTR=(function(){
  1855. var CTR=CryptoJS.lib.BlockCipherMode.extend();
  1856. var Encryptor=CTR.Encryptor=CTR.extend({
  1857. processBlock:function(words,offset){
  1858. var cipher=this._cipher
  1859. var blockSize=cipher.blockSize;
  1860. var iv=this._iv;
  1861. var counter=this._counter;
  1862. if(iv){
  1863. counter=this._counter=iv.slice(0);
  1864. this._iv=undefined;
  1865. }
  1866. var keystream=counter.slice(0);
  1867. cipher.encryptBlock(keystream,0);
  1868. counter[blockSize-1]=(counter[blockSize-1]+1)|0
  1869. for(var i=0;i<blockSize;i++){
  1870. words[offset+i]^=keystream[i];
  1871. }
  1872. }
  1873. });
  1874. CTR.Decryptor=Encryptor;
  1875. return CTR;
  1876. }());
  1877. CryptoJS.mode.CTRGladman=(function(){
  1878. var CTRGladman=CryptoJS.lib.BlockCipherMode.extend();
  1879. function incWord(word){
  1880. if(((word>>24)&0xff)===0xff){
  1881. var b1=(word>>16)&0xff;
  1882. var b2=(word>>8)&0xff;
  1883. var b3=word&0xff;
  1884. if(b1===0xff)
  1885. {
  1886. b1=0;
  1887. if(b2===0xff){
  1888. b2=0;
  1889. if(b3===0xff){
  1890. b3=0;
  1891. }else{++b3;
  1892. }
  1893. }else{++b2;
  1894. }
  1895. }else{++b1;
  1896. }
  1897. word=0;
  1898. word+=(b1<<16);
  1899. word+=(b2<<8);
  1900. word+=b3;
  1901. }else{
  1902. word+=(0x01<<24);
  1903. }
  1904. return word;
  1905. }
  1906. function incCounter(counter){
  1907. if((counter[0]=incWord(counter[0]))===0){
  1908. counter[1]=incWord(counter[1]);
  1909. }
  1910. return counter;
  1911. }
  1912. var Encryptor=CTRGladman.Encryptor=CTRGladman.extend({
  1913. processBlock:function(words,offset){
  1914. var cipher=this._cipher
  1915. var blockSize=cipher.blockSize;
  1916. var iv=this._iv;
  1917. var counter=this._counter;
  1918. if(iv){
  1919. counter=this._counter=iv.slice(0);
  1920. this._iv=undefined;
  1921. }
  1922. incCounter(counter);
  1923. var keystream=counter.slice(0);
  1924. cipher.encryptBlock(keystream,0);
  1925. for(var i=0;i<blockSize;i++){
  1926. words[offset+i]^=keystream[i];
  1927. }
  1928. }
  1929. });
  1930. CTRGladman.Decryptor=Encryptor;
  1931. return CTRGladman;
  1932. }());
  1933. CryptoJS.mode.OFB=(function(){
  1934. var OFB=CryptoJS.lib.BlockCipherMode.extend();
  1935. var Encryptor=OFB.Encryptor=OFB.extend({
  1936. processBlock:function(words,offset){
  1937. var cipher=this._cipher
  1938. var blockSize=cipher.blockSize;
  1939. var iv=this._iv;
  1940. var keystream=this._keystream;
  1941. if(iv){
  1942. keystream=this._keystream=iv.slice(0);
  1943. this._iv=undefined;
  1944. }
  1945. cipher.encryptBlock(keystream,0);
  1946. for(var i=0;i<blockSize;i++){
  1947. words[offset+i]^=keystream[i];
  1948. }
  1949. }
  1950. });
  1951. OFB.Decryptor=Encryptor;
  1952. return OFB;
  1953. }());
  1954. CryptoJS.mode.ECB=(function(){
  1955. var ECB=CryptoJS.lib.BlockCipherMode.extend();
  1956. ECB.Encryptor=ECB.extend({
  1957. processBlock:function(words,offset){
  1958. this._cipher.encryptBlock(words,offset);
  1959. }
  1960. });
  1961. ECB.Decryptor=ECB.extend({
  1962. processBlock:function(words,offset){
  1963. this._cipher.decryptBlock(words,offset);
  1964. }
  1965. });
  1966. return ECB;
  1967. }());
  1968. CryptoJS.pad.AnsiX923={
  1969. pad:function(data,blockSize){
  1970. var dataSigBytes=data.sigBytes;
  1971. var blockSizeBytes=blockSize*4;
  1972. var nPaddingBytes=blockSizeBytes-dataSigBytes%blockSizeBytes;
  1973. var lastBytePos=dataSigBytes+nPaddingBytes-1;
  1974. data.clamp();
  1975. data.words[lastBytePos>>>2]|=nPaddingBytes<<(24-(lastBytePos%4)*8);
  1976. data.sigBytes+=nPaddingBytes;
  1977. },
  1978. unpad:function(data){
  1979. var nPaddingBytes=data.words[(data.sigBytes-1)>>>2]&0xff;
  1980. data.sigBytes-=nPaddingBytes;
  1981. }
  1982. };
  1983. CryptoJS.pad.Iso10126={
  1984. pad:function(data,blockSize){
  1985. var blockSizeBytes=blockSize*4;
  1986. var nPaddingBytes=blockSizeBytes-data.sigBytes%blockSizeBytes;
  1987. data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes-1)).concat(CryptoJS.lib.WordArray.create([nPaddingBytes<<24],1));
  1988. },
  1989. unpad:function(data){
  1990. var nPaddingBytes=data.words[(data.sigBytes-1)>>>2]&0xff;
  1991. data.sigBytes-=nPaddingBytes;
  1992. }
  1993. };
  1994. CryptoJS.pad.Iso97971={
  1995. pad:function(data,blockSize){
  1996. data.concat(CryptoJS.lib.WordArray.create([0x80000000],1));
  1997. CryptoJS.pad.ZeroPadding.pad(data,blockSize);
  1998. },
  1999. unpad:function(data){
  2000. CryptoJS.pad.ZeroPadding.unpad(data);
  2001. data.sigBytes--;
  2002. }
  2003. };
  2004. CryptoJS.pad.ZeroPadding={
  2005. pad:function(data,blockSize){
  2006. var blockSizeBytes=blockSize*4;
  2007. data.clamp();
  2008. data.sigBytes+=blockSizeBytes-((data.sigBytes%blockSizeBytes)||blockSizeBytes);
  2009. },
  2010. unpad:function(data){
  2011. var dataWords=data.words;
  2012. var i=data.sigBytes-1;
  2013. for(var i=data.sigBytes-1;i>=0;i--){
  2014. if(((dataWords[i>>>2]>>>(24-(i%4)*8))&0xff)){
  2015. data.sigBytes=i+1;
  2016. break;
  2017. }
  2018. }
  2019. }
  2020. };
  2021. CryptoJS.pad.NoPadding={
  2022. pad:function(){},
  2023. unpad:function(){}
  2024. };
  2025. (function(undefined){
  2026. var C=CryptoJS;
  2027. var C_lib=C.lib;
  2028. var CipherParams=C_lib.CipherParams;
  2029. var C_enc=C.enc;
  2030. var Hex=C_enc.Hex;
  2031. var C_format=C.format;
  2032. var HexFormatter=C_format.Hex={
  2033. stringify:function(cipherParams){
  2034. return cipherParams.ciphertext.toString(Hex);
  2035. },
  2036. parse:function(input){
  2037. var ciphertext=Hex.parse(input);
  2038. return CipherParams.create({
  2039. ciphertext:ciphertext
  2040. });
  2041. }
  2042. };
  2043. }());
  2044. (function(){
  2045. var C=CryptoJS;
  2046. var C_lib=C.lib;
  2047. var BlockCipher=C_lib.BlockCipher;
  2048. var C_algo=C.algo;
  2049. var SBOX=[];
  2050. var INV_SBOX=[];
  2051. var SUB_MIX_0=[];
  2052. var SUB_MIX_1=[];
  2053. var SUB_MIX_2=[];
  2054. var SUB_MIX_3=[];
  2055. var INV_SUB_MIX_0=[];
  2056. var INV_SUB_MIX_1=[];
  2057. var INV_SUB_MIX_2=[];
  2058. var INV_SUB_MIX_3=[];
  2059. (function(){
  2060. var d=[];
  2061. for(var i=0;i<256;i++){
  2062. if(i<128){
  2063. d[i]=i<<1;
  2064. }else{
  2065. d[i]=(i<<1)^0x11b;
  2066. }
  2067. }
  2068. var x=0;
  2069. var xi=0;
  2070. for(var i=0;i<256;i++){
  2071. var sx=xi^(xi<<1)^(xi<<2)^(xi<<3)^(xi<<4);
  2072. sx=(sx>>>8)^(sx&0xff)^0x63;
  2073. SBOX[x]=sx;
  2074. INV_SBOX[sx]=x;
  2075. var x2=d[x];
  2076. var x4=d[x2];
  2077. var x8=d[x4];
  2078. var t=(d[sx]*0x101)^(sx*0x1010100);
  2079. SUB_MIX_0[x]=(t<<24)|(t>>>8);
  2080. SUB_MIX_1[x]=(t<<16)|(t>>>16);
  2081. SUB_MIX_2[x]=(t<<8)|(t>>>24);
  2082. SUB_MIX_3[x]=t;
  2083. var t=(x8*0x1010101)^(x4*0x10001)^(x2*0x101)^(x*0x1010100);
  2084. INV_SUB_MIX_0[sx]=(t<<24)|(t>>>8);
  2085. INV_SUB_MIX_1[sx]=(t<<16)|(t>>>16);
  2086. INV_SUB_MIX_2[sx]=(t<<8)|(t>>>24);
  2087. INV_SUB_MIX_3[sx]=t;
  2088. if(!x){
  2089. x=xi=1;
  2090. }else{
  2091. x=x2^d[d[d[x8^x2]]];
  2092. xi^=d[d[xi]];
  2093. }
  2094. }
  2095. }());
  2096. var RCON=[0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x1b,0x36];
  2097. var AES=C_algo.AES=BlockCipher.extend({
  2098. _doReset:function(){
  2099. var t;
  2100. if(this._nRounds&&this._keyPriorReset===this._key){
  2101. return;
  2102. }
  2103. var key=this._keyPriorReset=this._key;
  2104. var keyWords=key.words;
  2105. var keySize=key.sigBytes/4;
  2106. var nRounds=this._nRounds=keySize+6;
  2107. var ksRows=(nRounds+1)*4;
  2108. var keySchedule=this._keySchedule=[];
  2109. for(var ksRow=0;ksRow<ksRows;ksRow++){
  2110. if(ksRow<keySize){
  2111. keySchedule[ksRow]=keyWords[ksRow];
  2112. }else{
  2113. t=keySchedule[ksRow-1];
  2114. if(!(ksRow%keySize)){
  2115. t=(t<<8)|(t>>>24);
  2116. t=(SBOX[t>>>24]<<24)|(SBOX[(t>>>16)&0xff]<<16)|(SBOX[(t>>>8)&0xff]<<8)|SBOX[t&0xff];
  2117. t^=RCON[(ksRow/keySize)|0]<<24;
  2118. }else if(keySize>6&&ksRow%keySize==4){
  2119. t=(SBOX[t>>>24]<<24)|(SBOX[(t>>>16)&0xff]<<16)|(SBOX[(t>>>8)&0xff]<<8)|SBOX[t&0xff];
  2120. }
  2121. keySchedule[ksRow]=keySchedule[ksRow-keySize]^t;
  2122. }
  2123. }
  2124. var invKeySchedule=this._invKeySchedule=[];
  2125. for(var invKsRow=0;invKsRow<ksRows;invKsRow++){
  2126. var ksRow=ksRows-invKsRow;
  2127. if(invKsRow%4){
  2128. var t=keySchedule[ksRow];
  2129. }else{
  2130. var t=keySchedule[ksRow-4];
  2131. }
  2132. if(invKsRow<4||ksRow<=4){
  2133. invKeySchedule[invKsRow]=t;
  2134. }else{
  2135. 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]];
  2136. }
  2137. }
  2138. },
  2139. encryptBlock:function(M,offset){
  2140. this._doCryptBlock(M,offset,this._keySchedule,SUB_MIX_0,SUB_MIX_1,SUB_MIX_2,SUB_MIX_3,SBOX);
  2141. },
  2142. decryptBlock:function(M,offset){
  2143. var t=M[offset+1];
  2144. M[offset+1]=M[offset+3];
  2145. M[offset+3]=t;
  2146. this._doCryptBlock(M,offset,this._invKeySchedule,INV_SUB_MIX_0,INV_SUB_MIX_1,INV_SUB_MIX_2,INV_SUB_MIX_3,INV_SBOX);
  2147. var t=M[offset+1];
  2148. M[offset+1]=M[offset+3];
  2149. M[offset+3]=t;
  2150. },
  2151. _doCryptBlock:function(M,offset,keySchedule,SUB_MIX_0,SUB_MIX_1,SUB_MIX_2,SUB_MIX_3,SBOX){
  2152. var nRounds=this._nRounds;
  2153. var s0=M[offset]^keySchedule[0];
  2154. var s1=M[offset+1]^keySchedule[1];
  2155. var s2=M[offset+2]^keySchedule[2];
  2156. var s3=M[offset+3]^keySchedule[3];
  2157. var ksRow=4;
  2158. for(var round=1;round<nRounds;round++){
  2159. 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++];
  2160. 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++];
  2161. 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++];
  2162. 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++];
  2163. s0=t0;
  2164. s1=t1;
  2165. s2=t2;
  2166. s3=t3;
  2167. }
  2168. var t0=((SBOX[s0>>>24]<<24)|(SBOX[(s1>>>16)&0xff]<<16)|(SBOX[(s2>>>8)&0xff]<<8)|SBOX[s3&0xff])^keySchedule[ksRow++];
  2169. var t1=((SBOX[s1>>>24]<<24)|(SBOX[(s2>>>16)&0xff]<<16)|(SBOX[(s3>>>8)&0xff]<<8)|SBOX[s0&0xff])^keySchedule[ksRow++];
  2170. var t2=((SBOX[s2>>>24]<<24)|(SBOX[(s3>>>16)&0xff]<<16)|(SBOX[(s0>>>8)&0xff]<<8)|SBOX[s1&0xff])^keySchedule[ksRow++];
  2171. var t3=((SBOX[s3>>>24]<<24)|(SBOX[(s0>>>16)&0xff]<<16)|(SBOX[(s1>>>8)&0xff]<<8)|SBOX[s2&0xff])^keySchedule[ksRow++];
  2172. M[offset]=t0;
  2173. M[offset+1]=t1;
  2174. M[offset+2]=t2;
  2175. M[offset+3]=t3;
  2176. },
  2177. keySize:256/32
  2178. });
  2179. C.AES=BlockCipher._createHelper(AES);
  2180. }());
  2181. (function(){
  2182. var C=CryptoJS;
  2183. var C_lib=C.lib;
  2184. var WordArray=C_lib.WordArray;
  2185. var BlockCipher=C_lib.BlockCipher;
  2186. var C_algo=C.algo;
  2187. 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];
  2188. 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];
  2189. var BIT_SHIFTS=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28];
  2190. var SBOX_P=[{
  2191. 0x0:0x808200,
  2192. 0x10000000:0x8000,
  2193. 0x20000000:0x808002,
  2194. 0x30000000:0x2,
  2195. 0x40000000:0x200,
  2196. 0x50000000:0x808202,
  2197. 0x60000000:0x800202,
  2198. 0x70000000:0x800000,
  2199. 0x80000000:0x202,
  2200. 0x90000000:0x800200,
  2201. 0xa0000000:0x8200,
  2202. 0xb0000000:0x808000,
  2203. 0xc0000000:0x8002,
  2204. 0xd0000000:0x800002,
  2205. 0xe0000000:0x0,
  2206. 0xf0000000:0x8202,
  2207. 0x8000000:0x0,
  2208. 0x18000000:0x808202,
  2209. 0x28000000:0x8202,
  2210. 0x38000000:0x8000,
  2211. 0x48000000:0x808200,
  2212. 0x58000000:0x200,
  2213. 0x68000000:0x808002,
  2214. 0x78000000:0x2,
  2215. 0x88000000:0x800200,
  2216. 0x98000000:0x8200,
  2217. 0xa8000000:0x808000,
  2218. 0xb8000000:0x800202,
  2219. 0xc8000000:0x800002,
  2220. 0xd8000000:0x8002,
  2221. 0xe8000000:0x202,
  2222. 0xf8000000:0x800000,
  2223. 0x1:0x8000,
  2224. 0x10000001:0x2,
  2225. 0x20000001:0x808200,
  2226. 0x30000001:0x800000,
  2227. 0x40000001:0x808002,
  2228. 0x50000001:0x8200,
  2229. 0x60000001:0x200,
  2230. 0x70000001:0x800202,
  2231. 0x80000001:0x808202,
  2232. 0x90000001:0x808000,
  2233. 0xa0000001:0x800002,
  2234. 0xb0000001:0x8202,
  2235. 0xc0000001:0x202,
  2236. 0xd0000001:0x800200,
  2237. 0xe0000001:0x8002,
  2238. 0xf0000001:0x0,
  2239. 0x8000001:0x808202,
  2240. 0x18000001:0x808000,
  2241. 0x28000001:0x800000,
  2242. 0x38000001:0x200,
  2243. 0x48000001:0x8000,
  2244. 0x58000001:0x800002,
  2245. 0x68000001:0x2,
  2246. 0x78000001:0x8202,
  2247. 0x88000001:0x8002,
  2248. 0x98000001:0x800202,
  2249. 0xa8000001:0x202,
  2250. 0xb8000001:0x808200,
  2251. 0xc8000001:0x800200,
  2252. 0xd8000001:0x0,
  2253. 0xe8000001:0x8200,
  2254. 0xf8000001:0x808002
  2255. },
  2256. {
  2257. 0x0:0x40084010,
  2258. 0x1000000:0x4000,
  2259. 0x2000000:0x80000,
  2260. 0x3000000:0x40080010,
  2261. 0x4000000:0x40000010,
  2262. 0x5000000:0x40084000,
  2263. 0x6000000:0x40004000,
  2264. 0x7000000:0x10,
  2265. 0x8000000:0x84000,
  2266. 0x9000000:0x40004010,
  2267. 0xa000000:0x40000000,
  2268. 0xb000000:0x84010,
  2269. 0xc000000:0x80010,
  2270. 0xd000000:0x0,
  2271. 0xe000000:0x4010,
  2272. 0xf000000:0x40080000,
  2273. 0x800000:0x40004000,
  2274. 0x1800000:0x84010,
  2275. 0x2800000:0x10,
  2276. 0x3800000:0x40004010,
  2277. 0x4800000:0x40084010,
  2278. 0x5800000:0x40000000,
  2279. 0x6800000:0x80000,
  2280. 0x7800000:0x40080010,
  2281. 0x8800000:0x80010,
  2282. 0x9800000:0x0,
  2283. 0xa800000:0x4000,
  2284. 0xb800000:0x40080000,
  2285. 0xc800000:0x40000010,
  2286. 0xd800000:0x84000,
  2287. 0xe800000:0x40084000,
  2288. 0xf800000:0x4010,
  2289. 0x10000000:0x0,
  2290. 0x11000000:0x40080010,
  2291. 0x12000000:0x40004010,
  2292. 0x13000000:0x40084000,
  2293. 0x14000000:0x40080000,
  2294. 0x15000000:0x10,
  2295. 0x16000000:0x84010,
  2296. 0x17000000:0x4000,
  2297. 0x18000000:0x4010,
  2298. 0x19000000:0x80000,
  2299. 0x1a000000:0x80010,
  2300. 0x1b000000:0x40000010,
  2301. 0x1c000000:0x84000,
  2302. 0x1d000000:0x40004000,
  2303. 0x1e000000:0x40000000,
  2304. 0x1f000000:0x40084010,
  2305. 0x10800000:0x84010,
  2306. 0x11800000:0x80000,
  2307. 0x12800000:0x40080000,
  2308. 0x13800000:0x4000,
  2309. 0x14800000:0x40004000,
  2310. 0x15800000:0x40084010,
  2311. 0x16800000:0x10,
  2312. 0x17800000:0x40000000,
  2313. 0x18800000:0x40084000,
  2314. 0x19800000:0x40000010,
  2315. 0x1a800000:0x40004010,
  2316. 0x1b800000:0x80010,
  2317. 0x1c800000:0x0,
  2318. 0x1d800000:0x4010,
  2319. 0x1e800000:0x40080010,
  2320. 0x1f800000:0x84000
  2321. },
  2322. {
  2323. 0x0:0x104,
  2324. 0x100000:0x0,
  2325. 0x200000:0x4000100,
  2326. 0x300000:0x10104,
  2327. 0x400000:0x10004,
  2328. 0x500000:0x4000004,
  2329. 0x600000:0x4010104,
  2330. 0x700000:0x4010000,
  2331. 0x800000:0x4000000,
  2332. 0x900000:0x4010100,
  2333. 0xa00000:0x10100,
  2334. 0xb00000:0x4010004,
  2335. 0xc00000:0x4000104,
  2336. 0xd00000:0x10000,
  2337. 0xe00000:0x4,
  2338. 0xf00000:0x100,
  2339. 0x80000:0x4010100,
  2340. 0x180000:0x4010004,
  2341. 0x280000:0x0,
  2342. 0x380000:0x4000100,
  2343. 0x480000:0x4000004,
  2344. 0x580000:0x10000,
  2345. 0x680000:0x10004,
  2346. 0x780000:0x104,
  2347. 0x880000:0x4,
  2348. 0x980000:0x100,
  2349. 0xa80000:0x4010000,
  2350. 0xb80000:0x10104,
  2351. 0xc80000:0x10100,
  2352. 0xd80000:0x4000104,
  2353. 0xe80000:0x4010104,
  2354. 0xf80000:0x4000000,
  2355. 0x1000000:0x4010100,
  2356. 0x1100000:0x10004,
  2357. 0x1200000:0x10000,
  2358. 0x1300000:0x4000100,
  2359. 0x1400000:0x100,
  2360. 0x1500000:0x4010104,
  2361. 0x1600000:0x4000004,
  2362. 0x1700000:0x0,
  2363. 0x1800000:0x4000104,
  2364. 0x1900000:0x4000000,
  2365. 0x1a00000:0x4,
  2366. 0x1b00000:0x10100,
  2367. 0x1c00000:0x4010000,
  2368. 0x1d00000:0x104,
  2369. 0x1e00000:0x10104,
  2370. 0x1f00000:0x4010004,
  2371. 0x1080000:0x4000000,
  2372. 0x1180000:0x104,
  2373. 0x1280000:0x4010100,
  2374. 0x1380000:0x0,
  2375. 0x1480000:0x10004,
  2376. 0x1580000:0x4000100,
  2377. 0x1680000:0x100,
  2378. 0x1780000:0x4010004,
  2379. 0x1880000:0x10000,
  2380. 0x1980000:0x4010104,
  2381. 0x1a80000:0x10104,
  2382. 0x1b80000:0x4000004,
  2383. 0x1c80000:0x4000104,
  2384. 0x1d80000:0x4010000,
  2385. 0x1e80000:0x4,
  2386. 0x1f80000:0x10100
  2387. },
  2388. {
  2389. 0x0:0x80401000,
  2390. 0x10000:0x80001040,
  2391. 0x20000:0x401040,
  2392. 0x30000:0x80400000,
  2393. 0x40000:0x0,
  2394. 0x50000:0x401000,
  2395. 0x60000:0x80000040,
  2396. 0x70000:0x400040,
  2397. 0x80000:0x80000000,
  2398. 0x90000:0x400000,
  2399. 0xa0000:0x40,
  2400. 0xb0000:0x80001000,
  2401. 0xc0000:0x80400040,
  2402. 0xd0000:0x1040,
  2403. 0xe0000:0x1000,
  2404. 0xf0000:0x80401040,
  2405. 0x8000:0x80001040,
  2406. 0x18000:0x40,
  2407. 0x28000:0x80400040,
  2408. 0x38000:0x80001000,
  2409. 0x48000:0x401000,
  2410. 0x58000:0x80401040,
  2411. 0x68000:0x0,
  2412. 0x78000:0x80400000,
  2413. 0x88000:0x1000,
  2414. 0x98000:0x80401000,
  2415. 0xa8000:0x400000,
  2416. 0xb8000:0x1040,
  2417. 0xc8000:0x80000000,
  2418. 0xd8000:0x400040,
  2419. 0xe8000:0x401040,
  2420. 0xf8000:0x80000040,
  2421. 0x100000:0x400040,
  2422. 0x110000:0x401000,
  2423. 0x120000:0x80000040,
  2424. 0x130000:0x0,
  2425. 0x140000:0x1040,
  2426. 0x150000:0x80400040,
  2427. 0x160000:0x80401000,
  2428. 0x170000:0x80001040,
  2429. 0x180000:0x80401040,
  2430. 0x190000:0x80000000,
  2431. 0x1a0000:0x80400000,
  2432. 0x1b0000:0x401040,
  2433. 0x1c0000:0x80001000,
  2434. 0x1d0000:0x400000,
  2435. 0x1e0000:0x40,
  2436. 0x1f0000:0x1000,
  2437. 0x108000:0x80400000,
  2438. 0x118000:0x80401040,
  2439. 0x128000:0x0,
  2440. 0x138000:0x401000,
  2441. 0x148000:0x400040,
  2442. 0x158000:0x80000000,
  2443. 0x168000:0x80001040,
  2444. 0x178000:0x40,
  2445. 0x188000:0x80000040,
  2446. 0x198000:0x1000,
  2447. 0x1a8000:0x80001000,
  2448. 0x1b8000:0x80400040,
  2449. 0x1c8000:0x1040,
  2450. 0x1d8000:0x80401000,
  2451. 0x1e8000:0x400000,
  2452. 0x1f8000:0x401040
  2453. },
  2454. {
  2455. 0x0:0x80,
  2456. 0x1000:0x1040000,
  2457. 0x2000:0x40000,
  2458. 0x3000:0x20000000,
  2459. 0x4000:0x20040080,
  2460. 0x5000:0x1000080,
  2461. 0x6000:0x21000080,
  2462. 0x7000:0x40080,
  2463. 0x8000:0x1000000,
  2464. 0x9000:0x20040000,
  2465. 0xa000:0x20000080,
  2466. 0xb000:0x21040080,
  2467. 0xc000:0x21040000,
  2468. 0xd000:0x0,
  2469. 0xe000:0x1040080,
  2470. 0xf000:0x21000000,
  2471. 0x800:0x1040080,
  2472. 0x1800:0x21000080,
  2473. 0x2800:0x80,
  2474. 0x3800:0x1040000,
  2475. 0x4800:0x40000,
  2476. 0x5800:0x20040080,
  2477. 0x6800:0x21040000,
  2478. 0x7800:0x20000000,
  2479. 0x8800:0x20040000,
  2480. 0x9800:0x0,
  2481. 0xa800:0x21040080,
  2482. 0xb800:0x1000080,
  2483. 0xc800:0x20000080,
  2484. 0xd800:0x21000000,
  2485. 0xe800:0x1000000,
  2486. 0xf800:0x40080,
  2487. 0x10000:0x40000,
  2488. 0x11000:0x80,
  2489. 0x12000:0x20000000,
  2490. 0x13000:0x21000080,
  2491. 0x14000:0x1000080,
  2492. 0x15000:0x21040000,
  2493. 0x16000:0x20040080,
  2494. 0x17000:0x1000000,
  2495. 0x18000:0x21040080,
  2496. 0x19000:0x21000000,
  2497. 0x1a000:0x1040000,
  2498. 0x1b000:0x20040000,
  2499. 0x1c000:0x40080,
  2500. 0x1d000:0x20000080,
  2501. 0x1e000:0x0,
  2502. 0x1f000:0x1040080,
  2503. 0x10800:0x21000080,
  2504. 0x11800:0x1000000,
  2505. 0x12800:0x1040000,
  2506. 0x13800:0x20040080,
  2507. 0x14800:0x20000000,
  2508. 0x15800:0x1040080,
  2509. 0x16800:0x80,
  2510. 0x17800:0x21040000,
  2511. 0x18800:0x40080,
  2512. 0x19800:0x21040080,
  2513. 0x1a800:0x0,
  2514. 0x1b800:0x21000000,
  2515. 0x1c800:0x1000080,
  2516. 0x1d800:0x40000,
  2517. 0x1e800:0x20040000,
  2518. 0x1f800:0x20000080
  2519. },
  2520. {
  2521. 0x0:0x10000008,
  2522. 0x100:0x2000,
  2523. 0x200:0x10200000,
  2524. 0x300:0x10202008,
  2525. 0x400:0x10002000,
  2526. 0x500:0x200000,
  2527. 0x600:0x200008,
  2528. 0x700:0x10000000,
  2529. 0x800:0x0,
  2530. 0x900:0x10002008,
  2531. 0xa00:0x202000,
  2532. 0xb00:0x8,
  2533. 0xc00:0x10200008,
  2534. 0xd00:0x202008,
  2535. 0xe00:0x2008,
  2536. 0xf00:0x10202000,
  2537. 0x80:0x10200000,
  2538. 0x180:0x10202008,
  2539. 0x280:0x8,
  2540. 0x380:0x200000,
  2541. 0x480:0x202008,
  2542. 0x580:0x10000008,
  2543. 0x680:0x10002000,
  2544. 0x780:0x2008,
  2545. 0x880:0x200008,
  2546. 0x980:0x2000,
  2547. 0xa80:0x10002008,
  2548. 0xb80:0x10200008,
  2549. 0xc80:0x0,
  2550. 0xd80:0x10202000,
  2551. 0xe80:0x202000,
  2552. 0xf80:0x10000000,
  2553. 0x1000:0x10002000,
  2554. 0x1100:0x10200008,
  2555. 0x1200:0x10202008,
  2556. 0x1300:0x2008,
  2557. 0x1400:0x200000,
  2558. 0x1500:0x10000000,
  2559. 0x1600:0x10000008,
  2560. 0x1700:0x202000,
  2561. 0x1800:0x202008,
  2562. 0x1900:0x0,
  2563. 0x1a00:0x8,
  2564. 0x1b00:0x10200000,
  2565. 0x1c00:0x2000,
  2566. 0x1d00:0x10002008,
  2567. 0x1e00:0x10202000,
  2568. 0x1f00:0x200008,
  2569. 0x1080:0x8,
  2570. 0x1180:0x202000,
  2571. 0x1280:0x200000,
  2572. 0x1380:0x10000008,
  2573. 0x1480:0x10002000,
  2574. 0x1580:0x2008,
  2575. 0x1680:0x10202008,
  2576. 0x1780:0x10200000,
  2577. 0x1880:0x10202000,
  2578. 0x1980:0x10200008,
  2579. 0x1a80:0x2000,
  2580. 0x1b80:0x202008,
  2581. 0x1c80:0x200008,
  2582. 0x1d80:0x0,
  2583. 0x1e80:0x10000000,
  2584. 0x1f80:0x10002008
  2585. },
  2586. {
  2587. 0x0:0x100000,
  2588. 0x10:0x2000401,
  2589. 0x20:0x400,
  2590. 0x30:0x100401,
  2591. 0x40:0x2100401,
  2592. 0x50:0x0,
  2593. 0x60:0x1,
  2594. 0x70:0x2100001,
  2595. 0x80:0x2000400,
  2596. 0x90:0x100001,
  2597. 0xa0:0x2000001,
  2598. 0xb0:0x2100400,
  2599. 0xc0:0x2100000,
  2600. 0xd0:0x401,
  2601. 0xe0:0x100400,
  2602. 0xf0:0x2000000,
  2603. 0x8:0x2100001,
  2604. 0x18:0x0,
  2605. 0x28:0x2000401,
  2606. 0x38:0x2100400,
  2607. 0x48:0x100000,
  2608. 0x58:0x2000001,
  2609. 0x68:0x2000000,
  2610. 0x78:0x401,
  2611. 0x88:0x100401,
  2612. 0x98:0x2000400,
  2613. 0xa8:0x2100000,
  2614. 0xb8:0x100001,
  2615. 0xc8:0x400,
  2616. 0xd8:0x2100401,
  2617. 0xe8:0x1,
  2618. 0xf8:0x100400,
  2619. 0x100:0x2000000,
  2620. 0x110:0x100000,
  2621. 0x120:0x2000401,
  2622. 0x130:0x2100001,
  2623. 0x140:0x100001,
  2624. 0x150:0x2000400,
  2625. 0x160:0x2100400,
  2626. 0x170:0x100401,
  2627. 0x180:0x401,
  2628. 0x190:0x2100401,
  2629. 0x1a0:0x100400,
  2630. 0x1b0:0x1,
  2631. 0x1c0:0x0,
  2632. 0x1d0:0x2100000,
  2633. 0x1e0:0x2000001,
  2634. 0x1f0:0x400,
  2635. 0x108:0x100400,
  2636. 0x118:0x2000401,
  2637. 0x128:0x2100001,
  2638. 0x138:0x1,
  2639. 0x148:0x2000000,
  2640. 0x158:0x100000,
  2641. 0x168:0x401,
  2642. 0x178:0x2100400,
  2643. 0x188:0x2000001,
  2644. 0x198:0x2100000,
  2645. 0x1a8:0x0,
  2646. 0x1b8:0x2100401,
  2647. 0x1c8:0x100401,
  2648. 0x1d8:0x400,
  2649. 0x1e8:0x2000400,
  2650. 0x1f8:0x100001
  2651. },
  2652. {
  2653. 0x0:0x8000820,
  2654. 0x1:0x20000,
  2655. 0x2:0x8000000,
  2656. 0x3:0x20,
  2657. 0x4:0x20020,
  2658. 0x5:0x8020820,
  2659. 0x6:0x8020800,
  2660. 0x7:0x800,
  2661. 0x8:0x8020000,
  2662. 0x9:0x8000800,
  2663. 0xa:0x20800,
  2664. 0xb:0x8020020,
  2665. 0xc:0x820,
  2666. 0xd:0x0,
  2667. 0xe:0x8000020,
  2668. 0xf:0x20820,
  2669. 0x80000000:0x800,
  2670. 0x80000001:0x8020820,
  2671. 0x80000002:0x8000820,
  2672. 0x80000003:0x8000000,
  2673. 0x80000004:0x8020000,
  2674. 0x80000005:0x20800,
  2675. 0x80000006:0x20820,
  2676. 0x80000007:0x20,
  2677. 0x80000008:0x8000020,
  2678. 0x80000009:0x820,
  2679. 0x8000000a:0x20020,
  2680. 0x8000000b:0x8020800,
  2681. 0x8000000c:0x0,
  2682. 0x8000000d:0x8020020,
  2683. 0x8000000e:0x8000800,
  2684. 0x8000000f:0x20000,
  2685. 0x10:0x20820,
  2686. 0x11:0x8020800,
  2687. 0x12:0x20,
  2688. 0x13:0x800,
  2689. 0x14:0x8000800,
  2690. 0x15:0x8000020,
  2691. 0x16:0x8020020,
  2692. 0x17:0x20000,
  2693. 0x18:0x0,
  2694. 0x19:0x20020,
  2695. 0x1a:0x8020000,
  2696. 0x1b:0x8000820,
  2697. 0x1c:0x8020820,
  2698. 0x1d:0x20800,
  2699. 0x1e:0x820,
  2700. 0x1f:0x8000000,
  2701. 0x80000010:0x20000,
  2702. 0x80000011:0x800,
  2703. 0x80000012:0x8020020,
  2704. 0x80000013:0x20820,
  2705. 0x80000014:0x20,
  2706. 0x80000015:0x8020000,
  2707. 0x80000016:0x8000000,
  2708. 0x80000017:0x8000820,
  2709. 0x80000018:0x8020820,
  2710. 0x80000019:0x8000020,
  2711. 0x8000001a:0x8000800,
  2712. 0x8000001b:0x0,
  2713. 0x8000001c:0x20800,
  2714. 0x8000001d:0x820,
  2715. 0x8000001e:0x20020,
  2716. 0x8000001f:0x8020800
  2717. }];
  2718. var SBOX_MASK=[0xf8000001,0x1f800000,0x01f80000,0x001f8000,0x0001f800,0x00001f80,0x000001f8,0x8000001f];
  2719. var DES=C_algo.DES=BlockCipher.extend({
  2720. _doReset:function(){
  2721. var key=this._key;
  2722. var keyWords=key.words;
  2723. var keyBits=[];
  2724. for(var i=0;i<56;i++){
  2725. var keyBitPos=PC1[i]-1;
  2726. keyBits[i]=(keyWords[keyBitPos>>>5]>>>(31-keyBitPos%32))&1;
  2727. }
  2728. var subKeys=this._subKeys=[];
  2729. for(var nSubKey=0;nSubKey<16;nSubKey++){
  2730. var subKey=subKeys[nSubKey]=[];
  2731. var bitShift=BIT_SHIFTS[nSubKey];
  2732. for(var i=0;i<24;i++){
  2733. subKey[(i/6)|0]|=keyBits[((PC2[i]-1)+bitShift)%28]<<(31-i%6);
  2734. subKey[4+((i/6)|0)]|=keyBits[28+(((PC2[i+24]-1)+bitShift)%28)]<<(31-i%6);
  2735. }
  2736. subKey[0]=(subKey[0]<<1)|(subKey[0]>>>31);
  2737. for(var i=1;i<7;i++){
  2738. subKey[i]=subKey[i]>>>((i-1)*4+3);
  2739. }
  2740. subKey[7]=(subKey[7]<<5)|(subKey[7]>>>27);
  2741. }
  2742. var invSubKeys=this._invSubKeys=[];
  2743. for(var i=0;i<16;i++){
  2744. invSubKeys[i]=subKeys[15-i];
  2745. }
  2746. },
  2747. encryptBlock:function(M,offset){
  2748. this._doCryptBlock(M,offset,this._subKeys);
  2749. },
  2750. decryptBlock:function(M,offset){
  2751. this._doCryptBlock(M,offset,this._invSubKeys);
  2752. },
  2753. _doCryptBlock:function(M,offset,subKeys){
  2754. this._lBlock=M[offset];
  2755. this._rBlock=M[offset+1];
  2756. exchangeLR.call(this,4,0x0f0f0f0f);
  2757. exchangeLR.call(this,16,0x0000ffff);
  2758. exchangeRL.call(this,2,0x33333333);
  2759. exchangeRL.call(this,8,0x00ff00ff);
  2760. exchangeLR.call(this,1,0x55555555);
  2761. for(var round=0;round<16;round++){
  2762. var subKey=subKeys[round];
  2763. var lBlock=this._lBlock;
  2764. var rBlock=this._rBlock;
  2765. var f=0;
  2766. for(var i=0;i<8;i++){
  2767. f|=SBOX_P[i][((rBlock^subKey[i])&SBOX_MASK[i])>>>0];
  2768. }
  2769. this._lBlock=rBlock;
  2770. this._rBlock=lBlock^f;
  2771. }
  2772. var t=this._lBlock;
  2773. this._lBlock=this._rBlock;
  2774. this._rBlock=t;
  2775. exchangeLR.call(this,1,0x55555555);
  2776. exchangeRL.call(this,8,0x00ff00ff);
  2777. exchangeRL.call(this,2,0x33333333);
  2778. exchangeLR.call(this,16,0x0000ffff);
  2779. exchangeLR.call(this,4,0x0f0f0f0f);
  2780. M[offset]=this._lBlock;
  2781. M[offset+1]=this._rBlock;
  2782. },
  2783. keySize:64/32,
  2784. ivSize:64/32,
  2785. blockSize:64/32
  2786. });
  2787. function exchangeLR(offset,mask){
  2788. var t=((this._lBlock>>>offset)^this._rBlock)&mask;
  2789. this._rBlock^=t;
  2790. this._lBlock^=t<<offset;
  2791. }
  2792. function exchangeRL(offset,mask){
  2793. var t=((this._rBlock>>>offset)^this._lBlock)&mask;
  2794. this._lBlock^=t;
  2795. this._rBlock^=t<<offset;
  2796. }
  2797. C.DES=BlockCipher._createHelper(DES);
  2798. var TripleDES=C_algo.TripleDES=BlockCipher.extend({
  2799. _doReset:function(){
  2800. var key=this._key;
  2801. var keyWords=key.words;
  2802. if(keyWords.length!==2&&keyWords.length!==4&&keyWords.length<6){
  2803. throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');
  2804. }
  2805. var key1=keyWords.slice(0,2);
  2806. var key2=keyWords.length<4?keyWords.slice(0,2):keyWords.slice(2,4);
  2807. var key3=keyWords.length<6?keyWords.slice(0,2):keyWords.slice(4,6);
  2808. this._des1=DES.createEncryptor(WordArray.create(key1));
  2809. this._des2=DES.createEncryptor(WordArray.create(key2));
  2810. this._des3=DES.createEncryptor(WordArray.create(key3));
  2811. },
  2812. encryptBlock:function(M,offset){
  2813. this._des1.encryptBlock(M,offset);
  2814. this._des2.decryptBlock(M,offset);
  2815. this._des3.encryptBlock(M,offset);
  2816. },
  2817. decryptBlock:function(M,offset){
  2818. this._des3.decryptBlock(M,offset);
  2819. this._des2.encryptBlock(M,offset);
  2820. this._des1.decryptBlock(M,offset);
  2821. },
  2822. keySize:192/32,
  2823. ivSize:64/32,
  2824. blockSize:64/32
  2825. });
  2826. C.TripleDES=BlockCipher._createHelper(TripleDES);
  2827. }());
  2828. (function(){
  2829. var C=CryptoJS;
  2830. var C_lib=C.lib;
  2831. var StreamCipher=C_lib.StreamCipher;
  2832. var C_algo=C.algo;
  2833. var RC4=C_algo.RC4=StreamCipher.extend({
  2834. _doReset:function(){
  2835. var key=this._key;
  2836. var keyWords=key.words;
  2837. var keySigBytes=key.sigBytes;
  2838. var S=this._S=[];
  2839. for(var i=0;i<256;i++){
  2840. S[i]=i;
  2841. }
  2842. for(var i=0,
  2843. j=0;i<256;i++){
  2844. var keyByteIndex=i%keySigBytes;
  2845. var keyByte=(keyWords[keyByteIndex>>>2]>>>(24-(keyByteIndex%4)*8))&0xff;
  2846. j=(j+S[i]+keyByte)%256;
  2847. var t=S[i];
  2848. S[i]=S[j];
  2849. S[j]=t;
  2850. }
  2851. this._i=this._j=0;
  2852. },
  2853. _doProcessBlock:function(M,offset){
  2854. M[offset]^=generateKeystreamWord.call(this);
  2855. },
  2856. keySize:256/32,
  2857. ivSize:0
  2858. });
  2859. function generateKeystreamWord(){
  2860. var S=this._S;
  2861. var i=this._i;
  2862. var j=this._j;
  2863. var keystreamWord=0;
  2864. for(var n=0;n<4;n++){
  2865. i=(i+1)%256;
  2866. j=(j+S[i])%256;
  2867. var t=S[i];
  2868. S[i]=S[j];
  2869. S[j]=t;
  2870. keystreamWord|=S[(S[i]+S[j])%256]<<(24-n*8);
  2871. }
  2872. this._i=i;
  2873. this._j=j;
  2874. return keystreamWord;
  2875. }
  2876. C.RC4=StreamCipher._createHelper(RC4);
  2877. var RC4Drop=C_algo.RC4Drop=RC4.extend({
  2878. cfg:RC4.cfg.extend({
  2879. drop:192
  2880. }),
  2881. _doReset:function(){
  2882. RC4._doReset.call(this);
  2883. for(var i=this.cfg.drop;i>0;i--){
  2884. generateKeystreamWord.call(this);
  2885. }
  2886. }
  2887. });
  2888. C.RC4Drop=StreamCipher._createHelper(RC4Drop);
  2889. }());
  2890. (function(){
  2891. var C=CryptoJS;
  2892. var C_lib=C.lib;
  2893. var StreamCipher=C_lib.StreamCipher;
  2894. var C_algo=C.algo;
  2895. var S=[];
  2896. var C_=[];
  2897. var G=[];
  2898. var Rabbit=C_algo.Rabbit=StreamCipher.extend({
  2899. _doReset:function(){
  2900. var K=this._key.words;
  2901. var iv=this.cfg.iv;
  2902. for(var i=0;i<4;i++){
  2903. K[i]=(((K[i]<<8)|(K[i]>>>24))&0x00ff00ff)|(((K[i]<<24)|(K[i]>>>8))&0xff00ff00);
  2904. }
  2905. 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)];
  2906. 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)];
  2907. this._b=0;
  2908. for(var i=0;i<4;i++){
  2909. nextState.call(this);
  2910. }
  2911. for(var i=0;i<8;i++){
  2912. C[i]^=X[(i+4)&7];
  2913. }
  2914. if(iv){
  2915. var IV=iv.words;
  2916. var IV_0=IV[0];
  2917. var IV_1=IV[1];
  2918. var i0=(((IV_0<<8)|(IV_0>>>24))&0x00ff00ff)|(((IV_0<<24)|(IV_0>>>8))&0xff00ff00);
  2919. var i2=(((IV_1<<8)|(IV_1>>>24))&0x00ff00ff)|(((IV_1<<24)|(IV_1>>>8))&0xff00ff00);
  2920. var i1=(i0>>>16)|(i2&0xffff0000);
  2921. var i3=(i2<<16)|(i0&0x0000ffff);
  2922. C[0]^=i0;
  2923. C[1]^=i1;
  2924. C[2]^=i2;
  2925. C[3]^=i3;
  2926. C[4]^=i0;
  2927. C[5]^=i1;
  2928. C[6]^=i2;
  2929. C[7]^=i3;
  2930. for(var i=0;i<4;i++){
  2931. nextState.call(this);
  2932. }
  2933. }
  2934. },
  2935. _doProcessBlock:function(M,offset){
  2936. var X=this._X;
  2937. nextState.call(this);
  2938. S[0]=X[0]^(X[5]>>>16)^(X[3]<<16);
  2939. S[1]=X[2]^(X[7]>>>16)^(X[5]<<16);
  2940. S[2]=X[4]^(X[1]>>>16)^(X[7]<<16);
  2941. S[3]=X[6]^(X[3]>>>16)^(X[1]<<16);
  2942. for(var i=0;i<4;i++){
  2943. S[i]=(((S[i]<<8)|(S[i]>>>24))&0x00ff00ff)|(((S[i]<<24)|(S[i]>>>8))&0xff00ff00);
  2944. M[offset+i]^=S[i];
  2945. }
  2946. },
  2947. blockSize:128/32,
  2948. ivSize:64/32
  2949. });
  2950. function nextState(){
  2951. var X=this._X;
  2952. var C=this._C;
  2953. for(var i=0;i<8;i++){
  2954. C_[i]=C[i];
  2955. }
  2956. C[0]=(C[0]+0x4d34d34d+this._b)|0;
  2957. C[1]=(C[1]+0xd34d34d3+((C[0]>>>0)<(C_[0]>>>0)?1:0))|0;
  2958. C[2]=(C[2]+0x34d34d34+((C[1]>>>0)<(C_[1]>>>0)?1:0))|0;
  2959. C[3]=(C[3]+0x4d34d34d+((C[2]>>>0)<(C_[2]>>>0)?1:0))|0;
  2960. C[4]=(C[4]+0xd34d34d3+((C[3]>>>0)<(C_[3]>>>0)?1:0))|0;
  2961. C[5]=(C[5]+0x34d34d34+((C[4]>>>0)<(C_[4]>>>0)?1:0))|0;
  2962. C[6]=(C[6]+0x4d34d34d+((C[5]>>>0)<(C_[5]>>>0)?1:0))|0;
  2963. C[7]=(C[7]+0xd34d34d3+((C[6]>>>0)<(C_[6]>>>0)?1:0))|0;
  2964. this._b=(C[7]>>>0)<(C_[7]>>>0)?1:0;
  2965. for(var i=0;i<8;i++){
  2966. var gx=X[i]+C[i];
  2967. var ga=gx&0xffff;
  2968. var gb=gx>>>16;
  2969. var gh=((((ga*ga)>>>17)+ga*gb)>>>15)+gb*gb;
  2970. var gl=(((gx&0xffff0000)*gx)|0)+(((gx&0x0000ffff)*gx)|0);
  2971. G[i]=gh^gl;
  2972. }
  2973. X[0]=(G[0]+((G[7]<<16)|(G[7]>>>16))+((G[6]<<16)|(G[6]>>>16)))|0;
  2974. X[1]=(G[1]+((G[0]<<8)|(G[0]>>>24))+G[7])|0;
  2975. X[2]=(G[2]+((G[1]<<16)|(G[1]>>>16))+((G[0]<<16)|(G[0]>>>16)))|0;
  2976. X[3]=(G[3]+((G[2]<<8)|(G[2]>>>24))+G[1])|0;
  2977. X[4]=(G[4]+((G[3]<<16)|(G[3]>>>16))+((G[2]<<16)|(G[2]>>>16)))|0;
  2978. X[5]=(G[5]+((G[4]<<8)|(G[4]>>>24))+G[3])|0;
  2979. X[6]=(G[6]+((G[5]<<16)|(G[5]>>>16))+((G[4]<<16)|(G[4]>>>16)))|0;
  2980. X[7]=(G[7]+((G[6]<<8)|(G[6]>>>24))+G[5])|0;
  2981. }
  2982. C.Rabbit=StreamCipher._createHelper(Rabbit);
  2983. }());
  2984. (function(){
  2985. var C=CryptoJS;
  2986. var C_lib=C.lib;
  2987. var StreamCipher=C_lib.StreamCipher;
  2988. var C_algo=C.algo;
  2989. var S=[];
  2990. var C_=[];
  2991. var G=[];
  2992. var RabbitLegacy=C_algo.RabbitLegacy=StreamCipher.extend({
  2993. _doReset:function(){
  2994. var K=this._key.words;
  2995. var iv=this.cfg.iv;
  2996. 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)];
  2997. 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)];
  2998. this._b=0;
  2999. for(var i=0;i<4;i++){
  3000. nextState.call(this);
  3001. }
  3002. for(var i=0;i<8;i++){
  3003. C[i]^=X[(i+4)&7];
  3004. }
  3005. if(iv){
  3006. var IV=iv.words;
  3007. var IV_0=IV[0];
  3008. var IV_1=IV[1];
  3009. var i0=(((IV_0<<8)|(IV_0>>>24))&0x00ff00ff)|(((IV_0<<24)|(IV_0>>>8))&0xff00ff00);
  3010. var i2=(((IV_1<<8)|(IV_1>>>24))&0x00ff00ff)|(((IV_1<<24)|(IV_1>>>8))&0xff00ff00);
  3011. var i1=(i0>>>16)|(i2&0xffff0000);
  3012. var i3=(i2<<16)|(i0&0x0000ffff);
  3013. C[0]^=i0;
  3014. C[1]^=i1;
  3015. C[2]^=i2;
  3016. C[3]^=i3;
  3017. C[4]^=i0;
  3018. C[5]^=i1;
  3019. C[6]^=i2;
  3020. C[7]^=i3;
  3021. for(var i=0;i<4;i++){
  3022. nextState.call(this);
  3023. }
  3024. }
  3025. },
  3026. _doProcessBlock:function(M,offset){
  3027. var X=this._X;
  3028. nextState.call(this);
  3029. S[0]=X[0]^(X[5]>>>16)^(X[3]<<16);
  3030. S[1]=X[2]^(X[7]>>>16)^(X[5]<<16);
  3031. S[2]=X[4]^(X[1]>>>16)^(X[7]<<16);
  3032. S[3]=X[6]^(X[3]>>>16)^(X[1]<<16);
  3033. for(var i=0;i<4;i++){
  3034. S[i]=(((S[i]<<8)|(S[i]>>>24))&0x00ff00ff)|(((S[i]<<24)|(S[i]>>>8))&0xff00ff00);
  3035. M[offset+i]^=S[i];
  3036. }
  3037. },
  3038. blockSize:128/32,
  3039. ivSize:64/32
  3040. });
  3041. function nextState(){
  3042. var X=this._X;
  3043. var C=this._C;
  3044. for(var i=0;i<8;i++){
  3045. C_[i]=C[i];
  3046. }
  3047. C[0]=(C[0]+0x4d34d34d+this._b)|0;
  3048. C[1]=(C[1]+0xd34d34d3+((C[0]>>>0)<(C_[0]>>>0)?1:0))|0;
  3049. C[2]=(C[2]+0x34d34d34+((C[1]>>>0)<(C_[1]>>>0)?1:0))|0;
  3050. C[3]=(C[3]+0x4d34d34d+((C[2]>>>0)<(C_[2]>>>0)?1:0))|0;
  3051. C[4]=(C[4]+0xd34d34d3+((C[3]>>>0)<(C_[3]>>>0)?1:0))|0;
  3052. C[5]=(C[5]+0x34d34d34+((C[4]>>>0)<(C_[4]>>>0)?1:0))|0;
  3053. C[6]=(C[6]+0x4d34d34d+((C[5]>>>0)<(C_[5]>>>0)?1:0))|0;
  3054. C[7]=(C[7]+0xd34d34d3+((C[6]>>>0)<(C_[6]>>>0)?1:0))|0;
  3055. this._b=(C[7]>>>0)<(C_[7]>>>0)?1:0;
  3056. for(var i=0;i<8;i++){
  3057. var gx=X[i]+C[i];
  3058. var ga=gx&0xffff;
  3059. var gb=gx>>>16;
  3060. var gh=((((ga*ga)>>>17)+ga*gb)>>>15)+gb*gb;
  3061. var gl=(((gx&0xffff0000)*gx)|0)+(((gx&0x0000ffff)*gx)|0);
  3062. G[i]=gh^gl;
  3063. }
  3064. X[0]=(G[0]+((G[7]<<16)|(G[7]>>>16))+((G[6]<<16)|(G[6]>>>16)))|0;
  3065. X[1]=(G[1]+((G[0]<<8)|(G[0]>>>24))+G[7])|0;
  3066. X[2]=(G[2]+((G[1]<<16)|(G[1]>>>16))+((G[0]<<16)|(G[0]>>>16)))|0;
  3067. X[3]=(G[3]+((G[2]<<8)|(G[2]>>>24))+G[1])|0;
  3068. X[4]=(G[4]+((G[3]<<16)|(G[3]>>>16))+((G[2]<<16)|(G[2]>>>16)))|0;
  3069. X[5]=(G[5]+((G[4]<<8)|(G[4]>>>24))+G[3])|0;
  3070. X[6]=(G[6]+((G[5]<<16)|(G[5]>>>16))+((G[4]<<16)|(G[4]>>>16)))|0;
  3071. X[7]=(G[7]+((G[6]<<8)|(G[6]>>>24))+G[5])|0;
  3072. }
  3073. C.RabbitLegacy=StreamCipher._createHelper(RabbitLegacy);
  3074. }());
  3075. return CryptoJS;
  3076. }));