Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.longtailvideo.plugins.mulutibu
- {
- public class AES extends Object
- {
- public function AES() {
- super();
- }
- public static const BIT_KEY_128:int = 128;
- public static const BIT_KEY_192:int = 192;
- public static const BIT_KEY_256:int = 256;
- 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];
- 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]];
- public static function e(param1:String, param2:int) : String {
- var _loc19_:* = 0;
- var _loc20_:Array = null;
- var _loc21_:* = 0;
- var _loc22_:Array = null;
- var _loc3_:* = 16;
- if(param2 == BIT_KEY_128 || param2 == BIT_KEY_192 || param2 == BIT_KEY_256)
- {
- }
- var param1:String = AES.encode(param1);
- var _loc4_:String = AES.iv();
- var _loc5_:int = param2 / 8;
- var _loc6_:Array = new Array(_loc5_);
- var _loc7_:* = 0;
- while(_loc7_ < _loc5_)
- {
- _loc6_[_loc7_] = isNaN(_loc4_.charCodeAt(_loc7_))?0:_loc4_.charCodeAt(_loc7_);
- _loc7_++;
- }
- var _loc8_:* = cipher(_loc6_,keyExpansion(_loc6_));
- _loc8_ = _loc8_.concat(_loc8_.slice(0,_loc5_ - 16));
- var _loc9_:Array = new Array(_loc3_);
- var _loc10_:int = new Date().getTime();
- var _loc11_:int = Math.floor(_loc10_ / 1000);
- var _loc12_:int = _loc10_ % 1000;
- _loc7_ = 0;
- while(_loc7_ < 4)
- {
- _loc9_[_loc7_] = _loc11_ >>> _loc7_ * 8 & 255;
- _loc7_++;
- }
- _loc7_ = 0;
- while(_loc7_ < 4)
- {
- _loc9_[_loc7_ + 4] = _loc12_ & 255;
- _loc7_++;
- }
- var _loc13_:* = "";
- _loc7_ = 0;
- while(_loc7_ < 8)
- {
- _loc13_ = _loc13_ + String.fromCharCode(_loc9_[_loc7_]);
- _loc7_++;
- }
- var _loc14_:Array = keyExpansion(_loc8_);
- var _loc15_:int = Math.ceil(param1.length / _loc3_);
- var _loc16_:Array = new Array(_loc15_);
- var _loc17_:* = 0;
- while(_loc17_ < _loc15_)
- {
- _loc19_ = 0;
- while(_loc19_ < 4)
- {
- _loc9_[15 - _loc19_] = _loc17_ >>> _loc19_ * 8 & 255;
- _loc19_++;
- }
- _loc19_ = 0;
- while(_loc19_ < 4)
- {
- _loc9_[15 - _loc19_ - 4] = _loc17_ / 4.294967296E9 >>> _loc19_ * 8;
- _loc19_++;
- }
- _loc20_ = cipher(_loc9_,_loc14_);
- _loc21_ = _loc17_ < _loc15_-1?_loc3_:(param1.length-1) % _loc3_ + 1;
- _loc22_ = new Array(_loc21_);
- _loc7_ = 0;
- while(_loc7_ < _loc21_)
- {
- _loc22_[_loc7_] = _loc20_[_loc7_] ^ param1.charCodeAt(_loc17_ * _loc3_ + _loc7_);
- _loc22_[_loc7_] = String.fromCharCode(_loc22_[_loc7_]);
- _loc7_++;
- }
- _loc16_[_loc17_] = _loc22_.join("");
- _loc17_++;
- }
- var _loc18_:String = _loc13_ + _loc16_.join("");
- _loc18_ = AES.encode(_loc18_);
- return _loc18_;
- }
- public static function d(param1:String, param2:int) : String {
- var _loc16_:* = 0;
- var _loc18_:* = 0;
- var _loc19_:Array = null;
- var _loc20_:Array = null;
- var _loc3_:* = 16;
- if(param2 == BIT_KEY_128 || param2 == BIT_KEY_192 || param2 == )
- {
- }
- var param1:String = AES.decode(param1);
- var _loc4_:String = AES.iv();
- var _loc5_:int = param2 / 8;
- var _loc6_:Array = new Array(_loc5_);
- var _loc7_:* = 0;
- while(_loc7_ < _loc5_)
- {
- _loc6_[_loc7_] = isNaN(_loc4_.charCodeAt(_loc7_))?0:_loc4_.charCodeAt(_loc7_);
- _loc7_++;
- }
- var _loc8_:* = cipher(_loc6_,keyExpansion(_loc6_));
- _loc8_ = _loc8_.concat(_loc8_.slice(0,_loc5_ - 16));
- var _loc9_:Array = new Array(8);
- var _loc10_:String = param1.slice(0,8);
- _loc7_ = 0;
- while(_loc7_ < 8)
- {
- _loc9_[_loc7_] = _loc10_.charCodeAt(_loc7_);
- _loc7_++;
- }
- var _loc11_:Array = keyExpansion(_loc8_);
- var _loc12_:int = Math.ceil((param1.length - 8) / _loc3_);
- var _loc13_:Array = new Array(_loc12_);
- _loc16_ = 0;
- while(_loc16_ < _loc12_)
- {
- _loc13_[_loc16_] = param1.slice(8 + _loc16_ * _loc3_,8 + _loc16_ * _loc3_ + _loc3_);
- _loc16_++;
- }
- var _loc14_:Array = _loc13_;
- var _loc15_:Array = new Array(_loc14_.length);
- _loc16_ = 0;
- while(_loc16_ < _loc12_)
- {
- _loc18_ = 0;
- while(_loc18_ < 4)
- {
- _loc9_[15 - _loc18_] = _loc16_ >>> _loc18_ * 8 & 255;
- _loc18_++;
- }
- _loc18_ = 0;
- while(_loc18_ < 4)
- {
- _loc9_[15 - _loc18_ - 4] = (_loc16_ + 1) / 4.294967296E9-1 >>> _loc18_ * 8 & 255;
- _loc18_++;
- }
- _loc19_ = cipher(_loc9_,_loc11_);
- _loc20_ = new Array(String(_loc14_[_loc16_]).length);
- _loc7_ = 0;
- while(_loc7_ < String(_loc14_[_loc16_]).length)
- {
- _loc20_[_loc7_] = _loc19_[_loc7_] ^ String(_loc14_[_loc16_]).charCodeAt(_loc7_);
- _loc20_[_loc7_] = String.fromCharCode(_loc20_[_loc7_]);
- _loc7_++;
- }
- _loc15_[_loc16_] = _loc20_.join("");
- _loc16_++;
- }
- var _loc17_:String = _loc15_.join("");
- _loc17_ = AES.decode(_loc17_);
- return _loc17_;
- }
- private static function cipher(param1:Array, param2:Array) : Array {
- var _loc3_:* = 4;
- var _loc4_:int = param2.length / _loc3_-1;
- var _loc5_:* = 0;
- var _loc6_:Array = [[],[],[],[]];
- _loc5_ = 0;
- while(_loc5_ < 4 * _loc3_)
- {
- _loc6_[_loc5_ % 4][Math.floor(_loc5_ / 4)] = param1[_loc5_];
- _loc5_++;
- }
- _loc6_ = addRoundKey(_loc6_,param2,0,_loc3_);
- var _loc7_:* = 1;
- while(_loc7_ < _loc4_)
- {
- _loc6_ = subBytes(_loc6_,_loc3_);
- _loc6_ = shiftRows(_loc6_,_loc3_);
- _loc6_ = mixColumns(_loc6_);
- _loc6_ = addRoundKey(_loc6_,param2,_loc7_,_loc3_);
- _loc7_++;
- }
- _loc6_ = subBytes(_loc6_,_loc3_);
- _loc6_ = shiftRows(_loc6_,_loc3_);
- _loc6_ = addRoundKey(_loc6_,param2,_loc4_,_loc3_);
- var _loc8_:Array = new Array(4 * _loc3_);
- _loc5_ = 0;
- while(_loc5_ < 4 * _loc3_)
- {
- _loc8_[_loc5_] = _loc6_[_loc5_ % 4][Math.floor(_loc5_ / 4)];
- _loc5_++;
- }
- return _loc8_;
- }
- private static function iv() : String {
- var _loc1_:Array = [50,52,115,98,117,109,54,100,122,102,56,114,101];
- var _loc2_:* = "";
- var _loc3_:* = 0;
- while(_loc3_ < _loc1_.length)
- {
- if(_loc3_ == 0)
- {
- _loc2_ = _loc2_ + String.fromCharCode(_loc1_[_loc3_] ^ _loc1_[_loc3_-1]);
- }
- else if(_loc3_ % 2 == 0)
- {
- _loc2_ = _loc2_ + String.fromCharCode(_loc1_[_loc3_] ^ _loc1_[_loc3_ - 2]);
- }
- else if(_loc3_ % 3 == 0)
- {
- _loc2_ = _loc2_ + String.fromCharCode(_loc1_[_loc3_] ^ _loc1_[_loc3_ - 3]);
- }
- else
- {
- _loc2_ = _loc2_ + String.fromCharCode(_loc1_[_loc3_]);
- }
- _loc3_++;
- }
- return _loc2_;
- }
- private static function keyExpansion(param1:Array) : Array {
- var _loc8_:Array = null;
- var _loc9_:* = 0;
- var _loc2_:* = 4;
- var _loc3_:int = param1.length / 4;
- var _loc4_:int = _loc3_ + 6;
- var _loc5_:Array = new Array(_loc2_ * (_loc4_ + 1));
- var _loc6_:Array = new Array(4);
- var _loc7_:* = 0;
- while(_loc7_ < _loc3_)
- {
- _loc8_ = [param1[4 * _loc7_],param1[4 * _loc7_ + 1],param1[4 * _loc7_ + 2],param1[4 * _loc7_ + 3]];
- _loc5_[_loc7_] = _loc8_;
- _loc7_++;
- }
- _loc7_ = _loc3_;
- while(_loc7_ < _loc2_ * (_loc4_ + 1))
- {
- _loc5_[_loc7_] = new Array(4);
- _loc9_ = 0;
- while(_loc9_ < 4)
- {
- _loc6_[_loc9_] = _loc5_[_loc7_-1][_loc9_];
- _loc9_++;
- }
- if(_loc7_ % _loc3_ == 0)
- {
- _loc6_ = subWord(rotWord(_loc6_));
- _loc9_ = 0;
- while(_loc9_ < 4)
- {
- _loc6_[_loc9_] = _loc6_[_loc9_] ^ RCON[_loc7_ / _loc3_][_loc9_];
- _loc9_++;
- }
- }
- else if(_loc3_ > 6 && _loc7_ % _loc3_ == 4)
- {
- _loc6_ = subWord(_loc6_);
- }
- _loc9_ = 0;
- while(_loc9_ < 4)
- {
- _loc5_[_loc7_][_loc9_] = _loc5_[_loc7_ - _loc3_][_loc9_] ^ _loc6_[_loc9_];
- _loc9_++;
- }
- _loc7_++;
- }
- return _loc5_;
- }
- private static function subBytes(param1:Array, param2:int) : Array {
- var _loc4_:* = 0;
- var _loc3_:* = 0;
- while(_loc3_ < 4)
- {
- _loc4_ = 0;
- while(_loc4_ < param2)
- {
- param1[_loc3_][_loc4_] = SBOX[param1[_loc3_][_loc4_]];
- _loc4_++;
- }
- _loc3_++;
- }
- return param1;
- }
- private static function shiftRows(param1:Array, param2:int) : Array {
- var _loc5_:* = 0;
- var _loc3_:Array = new Array(4);
- var _loc4_:* = 1;
- while(_loc4_ < 4)
- {
- _loc5_ = 0;
- while(_loc5_ < 4)
- {
- _loc3_[_loc5_] = param1[_loc4_][(_loc5_ + _loc4_) % param2];
- _loc5_++;
- }
- _loc5_ = 0;
- while(_loc5_ < 4)
- {
- param1[_loc4_][_loc5_] = _loc3_[_loc5_];
- _loc5_++;
- }
- _loc4_++;
- }
- return param1;
- }
- private static function mixColumns(param1:Array) : Array {
- var _loc3_:Array = null;
- var _loc4_:Array = null;
- var _loc5_:* = 0;
- var _loc2_:* = 0;
- while(_loc2_ < 4)
- {
- _loc3_ = new Array(4);
- _loc4_ = new Array(4);
- _loc5_ = 0;
- while(_loc5_ < 4)
- {
- _loc3_[_loc5_] = param1[_loc5_][_loc2_];
- _loc4_[_loc5_] = param1[_loc5_][_loc2_] & 128?param1[_loc5_][_loc2_] << 1 ^ 283:param1[_loc5_][_loc2_] << 1;
- _loc5_++;
- }
- param1[0][_loc2_] = _loc4_[0] ^ _loc3_[1] ^ _loc4_[1] ^ _loc3_[2] ^ _loc3_[3];
- param1[1][_loc2_] = _loc3_[0] ^ _loc4_[1] ^ _loc3_[2] ^ _loc4_[2] ^ _loc3_[3];
- param1[2][_loc2_] = _loc3_[0] ^ _loc3_[1] ^ _loc4_[2] ^ _loc3_[3] ^ _loc4_[3];
- param1[3][_loc2_] = _loc3_[0] ^ _loc4_[0] ^ _loc3_[1] ^ _loc3_[2] ^ _loc4_[3];
- _loc2_++;
- }
- return param1;
- }
- private static function addRoundKey(param1:Array, param2:Array, param3:int, param4:int) : Array {
- var _loc6_:* = 0;
- var _loc5_:* = 0;
- while(_loc5_ < 4)
- {
- _loc6_ = 0;
- while(_loc6_ < param4)
- {
- param1[_loc5_][_loc6_] = param1[_loc5_][_loc6_] ^ param2[param3 * 4 + _loc6_][_loc5_];
- _loc6_++;
- }
- _loc5_++;
- }
- return param1;
- }
- private static function subWord(param1:Array) : Array {
- var _loc2_:* = 0;
- while(_loc2_ < 4)
- {
- param1[_loc2_] = SBOX[param1[_loc2_]];
- _loc2_++;
- }
- return param1;
- }
- private static function rotWord(param1:Array) : Array {
- var _loc2_:int = param1[0];
- var _loc3_:* = 0;
- while(_loc3_ < 3)
- {
- param1[_loc3_] = param1[_loc3_ + 1];
- _loc3_++;
- }
- param1[3] = _loc2_;
- return param1;
- }
- }
- }
- class Base64 extends Object
- {
- function Base64() {
Advertisement
Add Comment
Please, Sign In to add comment