root / trunk / web / dojo / dojox / encoding / crypto / Blowfish.js @ 13
History | View | Annotate | Download (17.9 KB)
1 | 9 | andrej.cim | /*
|
---|---|---|---|
2 | Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
|
||
3 | Available via Academic Free License >= 2.1 OR the modified BSD license.
|
||
4 | see: http://dojotoolkit.org/license for details
|
||
5 | */
|
||
6 | |||
7 | |||
8 | if(!dojo._hasResource["dojox.encoding.crypto.Blowfish"]){ |
||
9 | dojo._hasResource["dojox.encoding.crypto.Blowfish"]=true; |
||
10 | dojo.provide("dojox.encoding.crypto.Blowfish");
|
||
11 | dojo.require("dojox.encoding.base64");
|
||
12 | dojo.require("dojox.encoding.crypto._base");
|
||
13 | dojox.encoding.crypto.Blowfish=new function(){ |
||
14 | var _1=Math.pow(2,2); |
||
15 | var _2=Math.pow(2,3); |
||
16 | var _3=Math.pow(2,4); |
||
17 | var _4=Math.pow(2,8); |
||
18 | var _5=Math.pow(2,16); |
||
19 | var _6=Math.pow(2,24); |
||
20 | var iv=null; |
||
21 | var _7={p:[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],s0:[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],s1:[1266315497,3048417604,3681880366,3289982499,2909710000,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],s2:[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],s3:[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409000,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]}; |
||
22 | function _8(x,y){ |
||
23 | return (((x>>16)+(y>>16)+(((x&65535)+(y&65535))>>16))<<16)|(((x&65535)+(y&65535))&65535); |
||
24 | }; |
||
25 | function _9(x,y){ |
||
26 | return (((x>>16)^(y>>16))<<16)|(((x&65535)^(y&65535))&65535); |
||
27 | }; |
||
28 | function $(v,_a){ |
||
29 | var d=_a.s3[v&255]; |
||
30 | v>>=8;
|
||
31 | var c=_a.s2[v&255]; |
||
32 | v>>=8;
|
||
33 | var b=_a.s1[v&255]; |
||
34 | v>>=8;
|
||
35 | var a=_a.s0[v&255]; |
||
36 | var r=(((a>>16)+(b>>16)+(((a&65535)+(b&65535))>>16))<<16)|(((a&65535)+(b&65535))&65535); |
||
37 | r=(((r>>16)^(c>>16))<<16)|(((r&65535)^(c&65535))&65535); |
||
38 | return (((r>>16)+(d>>16)+(((r&65535)+(d&65535))>>16))<<16)|(((r&65535)+(d&65535))&65535); |
||
39 | }; |
||
40 | function eb(o,_b){ |
||
41 | var l=o.left;
|
||
42 | var r=o.right;
|
||
43 | l=_9(l,_b.p[0]);
|
||
44 | r=_9(r,_9($(l,_b),_b.p[1])); |
||
45 | l=_9(l,_9($(r,_b),_b.p[2])); |
||
46 | r=_9(r,_9($(l,_b),_b.p[3])); |
||
47 | l=_9(l,_9($(r,_b),_b.p[4])); |
||
48 | r=_9(r,_9($(l,_b),_b.p[5])); |
||
49 | l=_9(l,_9($(r,_b),_b.p[6])); |
||
50 | r=_9(r,_9($(l,_b),_b.p[7])); |
||
51 | l=_9(l,_9($(r,_b),_b.p[8])); |
||
52 | r=_9(r,_9($(l,_b),_b.p[9])); |
||
53 | l=_9(l,_9($(r,_b),_b.p[10])); |
||
54 | r=_9(r,_9($(l,_b),_b.p[11])); |
||
55 | l=_9(l,_9($(r,_b),_b.p[12])); |
||
56 | r=_9(r,_9($(l,_b),_b.p[13])); |
||
57 | l=_9(l,_9($(r,_b),_b.p[14])); |
||
58 | r=_9(r,_9($(l,_b),_b.p[15])); |
||
59 | l=_9(l,_9($(r,_b),_b.p[16])); |
||
60 | o.right=l; |
||
61 | o.left=_9(r,_b.p[17]);
|
||
62 | }; |
||
63 | function db(o,_c){ |
||
64 | var l=o.left;
|
||
65 | var r=o.right;
|
||
66 | l=_9(l,_c.p[17]);
|
||
67 | r=_9(r,_9($(l,_c),_c.p[16])); |
||
68 | l=_9(l,_9($(r,_c),_c.p[15])); |
||
69 | r=_9(r,_9($(l,_c),_c.p[14])); |
||
70 | l=_9(l,_9($(r,_c),_c.p[13])); |
||
71 | r=_9(r,_9($(l,_c),_c.p[12])); |
||
72 | l=_9(l,_9($(r,_c),_c.p[11])); |
||
73 | r=_9(r,_9($(l,_c),_c.p[10])); |
||
74 | l=_9(l,_9($(r,_c),_c.p[9])); |
||
75 | r=_9(r,_9($(l,_c),_c.p[8])); |
||
76 | l=_9(l,_9($(r,_c),_c.p[7])); |
||
77 | r=_9(r,_9($(l,_c),_c.p[6])); |
||
78 | l=_9(l,_9($(r,_c),_c.p[5])); |
||
79 | r=_9(r,_9($(l,_c),_c.p[4])); |
||
80 | l=_9(l,_9($(r,_c),_c.p[3])); |
||
81 | r=_9(r,_9($(l,_c),_c.p[2])); |
||
82 | l=_9(l,_9($(r,_c),_c.p[1])); |
||
83 | o.right=l; |
||
84 | o.left=_9(r,_c.p[0]);
|
||
85 | }; |
||
86 | function _d(_e){ |
||
87 | var k=_e;
|
||
88 | if(dojo.isString(k)){
|
||
89 | k=dojo.map(k.split(""),function(_f){ |
||
90 | return _f.charCodeAt(0)&255; |
||
91 | }); |
||
92 | } |
||
93 | var pos=0,_10=0,res={left:0,right:0},i,j,l; |
||
94 | var box={p:dojo.map(_7.p.slice(0),function(_11){ |
||
95 | var l=k.length,j;
|
||
96 | for(j=0;j<4;j++){ |
||
97 | _10=(_10*_4)|k[pos++%l]; |
||
98 | } |
||
99 | return (((_11>>16)^(_10>>16))<<16)|(((_11&65535)^(_10&65535))&65535); |
||
100 | }),s0:_7.s0.slice(0),s1:_7.s1.slice(0),s2:_7.s2.slice(0),s3:_7.s3.slice(0)}; |
||
101 | for(i=0,l=box.p.length;i<l;){ |
||
102 | eb(res,box); |
||
103 | box.p[i++]=res.left,box.p[i++]=res.right; |
||
104 | } |
||
105 | for(i=0;i<4;i++){ |
||
106 | for(j=0,l=box["s"+i].length;j<l;){ |
||
107 | eb(res,box); |
||
108 | box["s"+i][j++]=res.left,box["s"+i][j++]=res.right; |
||
109 | } |
||
110 | } |
||
111 | return box;
|
||
112 | }; |
||
113 | this.getIV=function(_12){ |
||
114 | var out=_12||dojox.encoding.crypto.outputTypes.Base64;
|
||
115 | switch(out){
|
||
116 | case dojox.encoding.crypto.outputTypes.Hex:
|
||
117 | return dojo.map(iv,function(_13){ |
||
118 | return (_13<=15?"0":"")+_13.toString(16); |
||
119 | }).join("");
|
||
120 | case dojox.encoding.crypto.outputTypes.String:
|
||
121 | return iv.join(""); |
||
122 | case dojox.encoding.crypto.outputTypes.Raw:
|
||
123 | return iv;
|
||
124 | default:
|
||
125 | return dojox.encoding.base64.encode(iv);
|
||
126 | } |
||
127 | }; |
||
128 | this.setIV=function(_14,_15){ |
||
129 | var ip=_15||dojox.encoding.crypto.outputTypes.Base64;
|
||
130 | var ba=null; |
||
131 | switch(ip){
|
||
132 | case dojox.encoding.crypto.outputTypes.String:
|
||
133 | ba=dojo.map(_14.split(""),function(_16){ |
||
134 | return _16.charCodeAt(0); |
||
135 | }); |
||
136 | break;
|
||
137 | case dojox.encoding.crypto.outputTypes.Hex:
|
||
138 | ba=[]; |
||
139 | for(var i=0,l=_14.length-1;i<l;i+=2){ |
||
140 | ba.push(parseInt(_14.substr(i,2),16)); |
||
141 | } |
||
142 | break;
|
||
143 | case dojox.encoding.crypto.outputTypes.Raw:
|
||
144 | ba=_14; |
||
145 | break;
|
||
146 | default:
|
||
147 | ba=dojox.encoding.base64.decode(_14); |
||
148 | break;
|
||
149 | } |
||
150 | iv={}; |
||
151 | iv.left=ba[0]*_6|ba[1]*_5|ba[2]*_4|ba[3]; |
||
152 | iv.right=ba[4]*_6|ba[5]*_5|ba[6]*_4|ba[7]; |
||
153 | }; |
||
154 | this.encrypt=function(_17,key,ao){ |
||
155 | var out=dojox.encoding.crypto.outputTypes.Base64;
|
||
156 | var _18=dojox.encoding.crypto.cipherModes.ECB;
|
||
157 | if(ao){
|
||
158 | if(ao.outputType){
|
||
159 | out=ao.outputType; |
||
160 | } |
||
161 | if(ao.cipherMode){
|
||
162 | _18=ao.cipherMode; |
||
163 | } |
||
164 | } |
||
165 | var bx=_d(key),_19=8-(_17.length&7); |
||
166 | for(var i=0;i<_19;i++){ |
||
167 | _17+=String.fromCharCode(_19); |
||
168 | } |
||
169 | var _1a=[],_1b=_17.length>>3,pos=0,o={},_1c=(_18==dojox.encoding.crypto.cipherModes.CBC); |
||
170 | var _1d={left:iv.left||null,right:iv.right||null}; |
||
171 | for(var i=0;i<_1b;i++){ |
||
172 | o.left=_17.charCodeAt(pos)*_6|_17.charCodeAt(pos+1)*_5|_17.charCodeAt(pos+2)*_4|_17.charCodeAt(pos+3); |
||
173 | o.right=_17.charCodeAt(pos+4)*_6|_17.charCodeAt(pos+5)*_5|_17.charCodeAt(pos+6)*_4|_17.charCodeAt(pos+7); |
||
174 | if(_1c){
|
||
175 | o.left=(((o.left>>16)^(_1d.left>>16))<<16)|(((o.left&65535)^(_1d.left&65535))&65535); |
||
176 | o.right=(((o.right>>16)^(_1d.right>>16))<<16)|(((o.right&65535)^(_1d.right&65535))&65535); |
||
177 | } |
||
178 | eb(o,bx); |
||
179 | if(_1c){
|
||
180 | _1d.left=o.left; |
||
181 | _1d.right=o.right; |
||
182 | } |
||
183 | _1a.push((o.left>>24)&255); |
||
184 | _1a.push((o.left>>16)&255); |
||
185 | _1a.push((o.left>>8)&255); |
||
186 | _1a.push(o.left&255);
|
||
187 | _1a.push((o.right>>24)&255); |
||
188 | _1a.push((o.right>>16)&255); |
||
189 | _1a.push((o.right>>8)&255); |
||
190 | _1a.push(o.right&255);
|
||
191 | pos+=8;
|
||
192 | } |
||
193 | switch(out){
|
||
194 | case dojox.encoding.crypto.outputTypes.Hex:
|
||
195 | return dojo.map(_1a,function(_1e){ |
||
196 | return (_1e<=15?"0":"")+_1e.toString(16); |
||
197 | }).join("");
|
||
198 | case dojox.encoding.crypto.outputTypes.String:
|
||
199 | return _1a.join(""); |
||
200 | case dojox.encoding.crypto.outputTypes.Raw:
|
||
201 | return _1a;
|
||
202 | default:
|
||
203 | return dojox.encoding.base64.encode(_1a);
|
||
204 | } |
||
205 | }; |
||
206 | this.decrypt=function(_1f,key,ao){ |
||
207 | var ip=dojox.encoding.crypto.outputTypes.Base64;
|
||
208 | var _20=dojox.encoding.crypto.cipherModes.ECB;
|
||
209 | if(ao){
|
||
210 | if(ao.outputType){
|
||
211 | ip=ao.outputType; |
||
212 | } |
||
213 | if(ao.cipherMode){
|
||
214 | _20=ao.cipherMode; |
||
215 | } |
||
216 | } |
||
217 | var bx=_d(key);
|
||
218 | var pt=[];
|
||
219 | var c=null; |
||
220 | switch(ip){
|
||
221 | case dojox.encoding.crypto.outputTypes.Hex:
|
||
222 | c=[]; |
||
223 | for(var i=0,l=_1f.length-1;i<l;i+=2){ |
||
224 | c.push(parseInt(_1f.substr(i,2),16)); |
||
225 | } |
||
226 | break;
|
||
227 | case dojox.encoding.crypto.outputTypes.String:
|
||
228 | c=dojo.map(_1f.split(""),function(_21){ |
||
229 | return _21.charCodeAt(0); |
||
230 | }); |
||
231 | break;
|
||
232 | case dojox.encoding.crypto.outputTypes.Raw:
|
||
233 | c=_1f; |
||
234 | break;
|
||
235 | default:
|
||
236 | c=dojox.encoding.base64.decode(_1f); |
||
237 | break;
|
||
238 | } |
||
239 | var _22=c.length>>3,pos=0,o={},_23=(_20==dojox.encoding.crypto.cipherModes.CBC); |
||
240 | var _24={left:iv.left||null,right:iv.right||null}; |
||
241 | for(var i=0;i<_22;i++){ |
||
242 | o.left=c[pos]*_6|c[pos+1]*_5|c[pos+2]*_4|c[pos+3]; |
||
243 | o.right=c[pos+4]*_6|c[pos+5]*_5|c[pos+6]*_4|c[pos+7]; |
||
244 | if(_23){
|
||
245 | var _25=o.left;
|
||
246 | var _26=o.right;
|
||
247 | } |
||
248 | db(o,bx); |
||
249 | if(_23){
|
||
250 | o.left=(((o.left>>16)^(_24.left>>16))<<16)|(((o.left&65535)^(_24.left&65535))&65535); |
||
251 | o.right=(((o.right>>16)^(_24.right>>16))<<16)|(((o.right&65535)^(_24.right&65535))&65535); |
||
252 | _24.left=_25; |
||
253 | _24.right=_26; |
||
254 | } |
||
255 | pt.push((o.left>>24)&255); |
||
256 | pt.push((o.left>>16)&255); |
||
257 | pt.push((o.left>>8)&255); |
||
258 | pt.push(o.left&255);
|
||
259 | pt.push((o.right>>24)&255); |
||
260 | pt.push((o.right>>16)&255); |
||
261 | pt.push((o.right>>8)&255); |
||
262 | pt.push(o.right&255);
|
||
263 | pos+=8;
|
||
264 | } |
||
265 | if(pt[pt.length-1]==pt[pt.length-2]||pt[pt.length-1]==1){ |
||
266 | var n=pt[pt.length-1]; |
||
267 | pt.splice(pt.length-n,n); |
||
268 | } |
||
269 | return dojo.map(pt,function(_27){ |
||
270 | return String.fromCharCode(_27);
|
||
271 | }).join("");
|
||
272 | }; |
||
273 | this.setIV("0000000000000000",dojox.encoding.crypto.outputTypes.Hex); |
||
274 | }(); |
||
275 | } |