Guest User

357823q823edghsdc485615

a guest
Apr 16th, 2014
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.72 KB | None | 0 0
  1. package com.longtailvideo.plugins.mulutibu
  2. {
  3. public class AES extends Object
  4. {
  5.  
  6. public function AES() {
  7. super();
  8. }
  9.  
  10. public static const BIT_KEY_128:int = 128;
  11.  
  12. public static const BIT_KEY_192:int = 192;
  13.  
  14. public static const BIT_KEY_256:int = 256;
  15.  
  16. private static const SBOX:Array = [99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22];
  17.  
  18. private static const RCON:Array = [[0,0,0,0],[1,0,0,0],[2,0,0,0],[4,0,0,0],[8,0,0,0],[16,0,0,0],[32,0,0,0],[64,0,0,0],[128,0,0,0],[27,0,0,0],[54,0,0,0]];
  19.  
  20. public static function e(param1:String, param2:int) : String {
  21. var _loc19_:* = 0;
  22. var _loc20_:Array = null;
  23. var _loc21_:* = 0;
  24. var _loc22_:Array = null;
  25. var _loc3_:* = 16;
  26. if(param2 == BIT_KEY_128 || param2 == BIT_KEY_192 || param2 == BIT_KEY_256)
  27. {
  28. }
  29. var param1:String = AES.encode(param1);
  30. var _loc4_:String = AES.iv();
  31. var _loc5_:int = param2 / 8;
  32. var _loc6_:Array = new Array(_loc5_);
  33. var _loc7_:* = 0;
  34. while(_loc7_ < _loc5_)
  35. {
  36. _loc6_[_loc7_] = isNaN(_loc4_.charCodeAt(_loc7_))?0:_loc4_.charCodeAt(_loc7_);
  37. _loc7_++;
  38. }
  39. var _loc8_:* = cipher(_loc6_,keyExpansion(_loc6_));
  40. _loc8_ = _loc8_.concat(_loc8_.slice(0,_loc5_ - 16));
  41. var _loc9_:Array = new Array(_loc3_);
  42. var _loc10_:int = new Date().getTime();
  43. var _loc11_:int = Math.floor(_loc10_ / 1000);
  44. var _loc12_:int = _loc10_ % 1000;
  45. _loc7_ = 0;
  46. while(_loc7_ < 4)
  47. {
  48. _loc9_[_loc7_] = _loc11_ >>> _loc7_ * 8 & 255;
  49. _loc7_++;
  50. }
  51. _loc7_ = 0;
  52. while(_loc7_ < 4)
  53. {
  54. _loc9_[_loc7_ + 4] = _loc12_ & 255;
  55. _loc7_++;
  56. }
  57. var _loc13_:* = "";
  58. _loc7_ = 0;
  59. while(_loc7_ < 8)
  60. {
  61. _loc13_ = _loc13_ + String.fromCharCode(_loc9_[_loc7_]);
  62. _loc7_++;
  63. }
  64. var _loc14_:Array = keyExpansion(_loc8_);
  65. var _loc15_:int = Math.ceil(param1.length / _loc3_);
  66. var _loc16_:Array = new Array(_loc15_);
  67. var _loc17_:* = 0;
  68. while(_loc17_ < _loc15_)
  69. {
  70. _loc19_ = 0;
  71. while(_loc19_ < 4)
  72. {
  73. _loc9_[15 - _loc19_] = _loc17_ >>> _loc19_ * 8 & 255;
  74. _loc19_++;
  75. }
  76. _loc19_ = 0;
  77. while(_loc19_ < 4)
  78. {
  79. _loc9_[15 - _loc19_ - 4] = _loc17_ / 4.294967296E9 >>> _loc19_ * 8;
  80. _loc19_++;
  81. }
  82. _loc20_ = cipher(_loc9_,_loc14_);
  83. _loc21_ = _loc17_ < _loc15_-1?_loc3_:(param1.length-1) % _loc3_ + 1;
  84. _loc22_ = new Array(_loc21_);
  85. _loc7_ = 0;
  86. while(_loc7_ < _loc21_)
  87. {
  88. _loc22_[_loc7_] = _loc20_[_loc7_] ^ param1.charCodeAt(_loc17_ * _loc3_ + _loc7_);
  89. _loc22_[_loc7_] = String.fromCharCode(_loc22_[_loc7_]);
  90. _loc7_++;
  91. }
  92. _loc16_[_loc17_] = _loc22_.join("");
  93. _loc17_++;
  94. }
  95. var _loc18_:String = _loc13_ + _loc16_.join("");
  96. _loc18_ = AES.encode(_loc18_);
  97. return _loc18_;
  98. }
  99.  
  100. public static function d(param1:String, param2:int) : String {
  101. var _loc16_:* = 0;
  102. var _loc18_:* = 0;
  103. var _loc19_:Array = null;
  104. var _loc20_:Array = null;
  105. var _loc3_:* = 16;
  106. if(param2 == BIT_KEY_128 || param2 == BIT_KEY_192 || param2 == )
  107. {
  108. }
  109. var param1:String = AES.decode(param1);
  110. var _loc4_:String = AES.iv();
  111. var _loc5_:int = param2 / 8;
  112. var _loc6_:Array = new Array(_loc5_);
  113. var _loc7_:* = 0;
  114. while(_loc7_ < _loc5_)
  115. {
  116. _loc6_[_loc7_] = isNaN(_loc4_.charCodeAt(_loc7_))?0:_loc4_.charCodeAt(_loc7_);
  117. _loc7_++;
  118. }
  119. var _loc8_:* = cipher(_loc6_,keyExpansion(_loc6_));
  120. _loc8_ = _loc8_.concat(_loc8_.slice(0,_loc5_ - 16));
  121. var _loc9_:Array = new Array(8);
  122. var _loc10_:String = param1.slice(0,8);
  123. _loc7_ = 0;
  124. while(_loc7_ < 8)
  125. {
  126. _loc9_[_loc7_] = _loc10_.charCodeAt(_loc7_);
  127. _loc7_++;
  128. }
  129. var _loc11_:Array = keyExpansion(_loc8_);
  130. var _loc12_:int = Math.ceil((param1.length - 8) / _loc3_);
  131. var _loc13_:Array = new Array(_loc12_);
  132. _loc16_ = 0;
  133. while(_loc16_ < _loc12_)
  134. {
  135. _loc13_[_loc16_] = param1.slice(8 + _loc16_ * _loc3_,8 + _loc16_ * _loc3_ + _loc3_);
  136. _loc16_++;
  137. }
  138. var _loc14_:Array = _loc13_;
  139. var _loc15_:Array = new Array(_loc14_.length);
  140. _loc16_ = 0;
  141. while(_loc16_ < _loc12_)
  142. {
  143. _loc18_ = 0;
  144. while(_loc18_ < 4)
  145. {
  146. _loc9_[15 - _loc18_] = _loc16_ >>> _loc18_ * 8 & 255;
  147. _loc18_++;
  148. }
  149. _loc18_ = 0;
  150. while(_loc18_ < 4)
  151. {
  152. _loc9_[15 - _loc18_ - 4] = (_loc16_ + 1) / 4.294967296E9-1 >>> _loc18_ * 8 & 255;
  153. _loc18_++;
  154. }
  155. _loc19_ = cipher(_loc9_,_loc11_);
  156. _loc20_ = new Array(String(_loc14_[_loc16_]).length);
  157. _loc7_ = 0;
  158. while(_loc7_ < String(_loc14_[_loc16_]).length)
  159. {
  160. _loc20_[_loc7_] = _loc19_[_loc7_] ^ String(_loc14_[_loc16_]).charCodeAt(_loc7_);
  161. _loc20_[_loc7_] = String.fromCharCode(_loc20_[_loc7_]);
  162. _loc7_++;
  163. }
  164. _loc15_[_loc16_] = _loc20_.join("");
  165. _loc16_++;
  166. }
  167. var _loc17_:String = _loc15_.join("");
  168. _loc17_ = AES.decode(_loc17_);
  169. return _loc17_;
  170. }
  171.  
  172. private static function cipher(param1:Array, param2:Array) : Array {
  173. var _loc3_:* = 4;
  174. var _loc4_:int = param2.length / _loc3_-1;
  175. var _loc5_:* = 0;
  176. var _loc6_:Array = [[],[],[],[]];
  177. _loc5_ = 0;
  178. while(_loc5_ < 4 * _loc3_)
  179. {
  180. _loc6_[_loc5_ % 4][Math.floor(_loc5_ / 4)] = param1[_loc5_];
  181. _loc5_++;
  182. }
  183. _loc6_ = addRoundKey(_loc6_,param2,0,_loc3_);
  184. var _loc7_:* = 1;
  185. while(_loc7_ < _loc4_)
  186. {
  187. _loc6_ = subBytes(_loc6_,_loc3_);
  188. _loc6_ = shiftRows(_loc6_,_loc3_);
  189. _loc6_ = mixColumns(_loc6_);
  190. _loc6_ = addRoundKey(_loc6_,param2,_loc7_,_loc3_);
  191. _loc7_++;
  192. }
  193. _loc6_ = subBytes(_loc6_,_loc3_);
  194. _loc6_ = shiftRows(_loc6_,_loc3_);
  195. _loc6_ = addRoundKey(_loc6_,param2,_loc4_,_loc3_);
  196. var _loc8_:Array = new Array(4 * _loc3_);
  197. _loc5_ = 0;
  198. while(_loc5_ < 4 * _loc3_)
  199. {
  200. _loc8_[_loc5_] = _loc6_[_loc5_ % 4][Math.floor(_loc5_ / 4)];
  201. _loc5_++;
  202. }
  203. return _loc8_;
  204. }
  205.  
  206. private static function iv() : String {
  207. var _loc1_:Array = [50,52,115,98,117,109,54,100,122,102,56,114,101];
  208. var _loc2_:* = "";
  209. var _loc3_:* = 0;
  210. while(_loc3_ < _loc1_.length)
  211. {
  212. if(_loc3_ == 0)
  213. {
  214. _loc2_ = _loc2_ + String.fromCharCode(_loc1_[_loc3_] ^ _loc1_[_loc3_-1]);
  215. }
  216. else if(_loc3_ % 2 == 0)
  217. {
  218. _loc2_ = _loc2_ + String.fromCharCode(_loc1_[_loc3_] ^ _loc1_[_loc3_ - 2]);
  219. }
  220. else if(_loc3_ % 3 == 0)
  221. {
  222. _loc2_ = _loc2_ + String.fromCharCode(_loc1_[_loc3_] ^ _loc1_[_loc3_ - 3]);
  223. }
  224. else
  225. {
  226. _loc2_ = _loc2_ + String.fromCharCode(_loc1_[_loc3_]);
  227. }
  228.  
  229.  
  230. _loc3_++;
  231. }
  232. return _loc2_;
  233. }
  234.  
  235. private static function keyExpansion(param1:Array) : Array {
  236. var _loc8_:Array = null;
  237. var _loc9_:* = 0;
  238. var _loc2_:* = 4;
  239. var _loc3_:int = param1.length / 4;
  240. var _loc4_:int = _loc3_ + 6;
  241. var _loc5_:Array = new Array(_loc2_ * (_loc4_ + 1));
  242. var _loc6_:Array = new Array(4);
  243. var _loc7_:* = 0;
  244. while(_loc7_ < _loc3_)
  245. {
  246. _loc8_ = [param1[4 * _loc7_],param1[4 * _loc7_ + 1],param1[4 * _loc7_ + 2],param1[4 * _loc7_ + 3]];
  247. _loc5_[_loc7_] = _loc8_;
  248. _loc7_++;
  249. }
  250. _loc7_ = _loc3_;
  251. while(_loc7_ < _loc2_ * (_loc4_ + 1))
  252. {
  253. _loc5_[_loc7_] = new Array(4);
  254. _loc9_ = 0;
  255. while(_loc9_ < 4)
  256. {
  257. _loc6_[_loc9_] = _loc5_[_loc7_-1][_loc9_];
  258. _loc9_++;
  259. }
  260. if(_loc7_ % _loc3_ == 0)
  261. {
  262. _loc6_ = subWord(rotWord(_loc6_));
  263. _loc9_ = 0;
  264. while(_loc9_ < 4)
  265. {
  266. _loc6_[_loc9_] = _loc6_[_loc9_] ^ RCON[_loc7_ / _loc3_][_loc9_];
  267. _loc9_++;
  268. }
  269. }
  270. else if(_loc3_ > 6 && _loc7_ % _loc3_ == 4)
  271. {
  272. _loc6_ = subWord(_loc6_);
  273. }
  274.  
  275. _loc9_ = 0;
  276. while(_loc9_ < 4)
  277. {
  278. _loc5_[_loc7_][_loc9_] = _loc5_[_loc7_ - _loc3_][_loc9_] ^ _loc6_[_loc9_];
  279. _loc9_++;
  280. }
  281. _loc7_++;
  282. }
  283. return _loc5_;
  284. }
  285.  
  286. private static function subBytes(param1:Array, param2:int) : Array {
  287. var _loc4_:* = 0;
  288. var _loc3_:* = 0;
  289. while(_loc3_ < 4)
  290. {
  291. _loc4_ = 0;
  292. while(_loc4_ < param2)
  293. {
  294. param1[_loc3_][_loc4_] = SBOX[param1[_loc3_][_loc4_]];
  295. _loc4_++;
  296. }
  297. _loc3_++;
  298. }
  299. return param1;
  300. }
  301.  
  302. private static function shiftRows(param1:Array, param2:int) : Array {
  303. var _loc5_:* = 0;
  304. var _loc3_:Array = new Array(4);
  305. var _loc4_:* = 1;
  306. while(_loc4_ < 4)
  307. {
  308. _loc5_ = 0;
  309. while(_loc5_ < 4)
  310. {
  311. _loc3_[_loc5_] = param1[_loc4_][(_loc5_ + _loc4_) % param2];
  312. _loc5_++;
  313. }
  314. _loc5_ = 0;
  315. while(_loc5_ < 4)
  316. {
  317. param1[_loc4_][_loc5_] = _loc3_[_loc5_];
  318. _loc5_++;
  319. }
  320. _loc4_++;
  321. }
  322. return param1;
  323. }
  324.  
  325. private static function mixColumns(param1:Array) : Array {
  326. var _loc3_:Array = null;
  327. var _loc4_:Array = null;
  328. var _loc5_:* = 0;
  329. var _loc2_:* = 0;
  330. while(_loc2_ < 4)
  331. {
  332. _loc3_ = new Array(4);
  333. _loc4_ = new Array(4);
  334. _loc5_ = 0;
  335. while(_loc5_ < 4)
  336. {
  337. _loc3_[_loc5_] = param1[_loc5_][_loc2_];
  338. _loc4_[_loc5_] = param1[_loc5_][_loc2_] & 128?param1[_loc5_][_loc2_] << 1 ^ 283:param1[_loc5_][_loc2_] << 1;
  339. _loc5_++;
  340. }
  341. param1[0][_loc2_] = _loc4_[0] ^ _loc3_[1] ^ _loc4_[1] ^ _loc3_[2] ^ _loc3_[3];
  342. param1[1][_loc2_] = _loc3_[0] ^ _loc4_[1] ^ _loc3_[2] ^ _loc4_[2] ^ _loc3_[3];
  343. param1[2][_loc2_] = _loc3_[0] ^ _loc3_[1] ^ _loc4_[2] ^ _loc3_[3] ^ _loc4_[3];
  344. param1[3][_loc2_] = _loc3_[0] ^ _loc4_[0] ^ _loc3_[1] ^ _loc3_[2] ^ _loc4_[3];
  345. _loc2_++;
  346. }
  347. return param1;
  348. }
  349.  
  350. private static function addRoundKey(param1:Array, param2:Array, param3:int, param4:int) : Array {
  351. var _loc6_:* = 0;
  352. var _loc5_:* = 0;
  353. while(_loc5_ < 4)
  354. {
  355. _loc6_ = 0;
  356. while(_loc6_ < param4)
  357. {
  358. param1[_loc5_][_loc6_] = param1[_loc5_][_loc6_] ^ param2[param3 * 4 + _loc6_][_loc5_];
  359. _loc6_++;
  360. }
  361. _loc5_++;
  362. }
  363. return param1;
  364. }
  365.  
  366. private static function subWord(param1:Array) : Array {
  367. var _loc2_:* = 0;
  368. while(_loc2_ < 4)
  369. {
  370. param1[_loc2_] = SBOX[param1[_loc2_]];
  371. _loc2_++;
  372. }
  373. return param1;
  374. }
  375.  
  376. private static function rotWord(param1:Array) : Array {
  377. var _loc2_:int = param1[0];
  378. var _loc3_:* = 0;
  379. while(_loc3_ < 3)
  380. {
  381. param1[_loc3_] = param1[_loc3_ + 1];
  382. _loc3_++;
  383. }
  384. param1[3] = _loc2_;
  385. return param1;
  386. }
  387. }
  388. }
  389. class Base64 extends Object
  390. {
  391.  
  392. function Base64() {
Advertisement
Add Comment
Please, Sign In to add comment