Как работает это шифрование? - PullRequest
0 голосов
/ 20 мая 2019

У меня есть этот файл SWF, и я нашел этот код. Я хочу знать, как это работает. Любая помощь будет высоко оценена.

public function encrypt(param1:String, param2:String) : String
      {
         var _loc8_:Number = NaN;
         var _loc9_:Number = NaN;
         var _loc12_:* = NaN;
         var _loc3_:Array = Convert.strToLongs(param1);
         var _loc4_:Array = Convert.strToLongs(param2);
         var _loc5_:Number = _loc3_.length;
         if(_loc5_ == 0)
         {
            return "";
         }
         if(_loc5_ == 1)
         {
            _loc3_[_loc5_++] = 0;
         }
         var _loc6_:Number = _loc3_[_loc5_ - 1];
         var _loc7_:Number = _loc3_[0];
         var _loc10_:Number = Math.floor(6 + 52 / _loc5_);
         var _loc11_:* = 0;
         while(_loc10_-- > 0)
         {
            _loc11_ = Number(_loc11_ + this.delta);
            _loc9_ = _loc11_ >>> 2 & 3;
            _loc12_ = 0;
            while(_loc12_ < _loc5_ - 1)
            {
               _loc7_ = _loc3_[_loc12_ + 1];
               _loc8_ = (_loc6_ >>> 5 ^ _loc7_ << 2) + (_loc7_ >>> 3 ^ _loc6_ << 4) ^ (_loc11_ ^ _loc7_) + (_loc4_[_loc12_ & 3 ^ _loc9_] ^ _loc6_);
               _loc6_ = _loc3_[_loc12_] = _loc3_[_loc12_] + _loc8_;
               _loc12_++;
            }
            _loc7_ = _loc3_[0];
            _loc8_ = (_loc6_ >>> 5 ^ _loc7_ << 2) + (_loc7_ >>> 3 ^ _loc6_ << 4) ^ (_loc11_ ^ _loc7_) + (_loc4_[_loc12_ & 3 ^ _loc9_] ^ _loc6_);
            _loc6_ = _loc3_[_loc5_ - 1] = _loc3_[_loc5_ - 1] + _loc8_;
         }
         return Convert.longsToHex(_loc3_);
      }

На самом деле я хочу расшифровать этот хэш

c80cebe419dbcdf34f05c5a41023160eda5e0be9e146dcb5c15fabc1ec0b9128

поэтому я немного учусь, но о шифровании.

Я знаю, что хэш-код является односторонним шифрованием, но я не думаю, что этот хэш-код является односторонним шифрованием, поскольку чуть ниже этой функции доступна функция дешифрования.

      public function decrypt(param1:String, param2:String) : String
  {
     var _loc8_:Number = NaN;
     var _loc9_:Number = NaN;
     var _loc12_:Number = NaN;
     var _loc3_:Array = Convert.hexToLongs(param1);
     var _loc4_:Array = Convert.strToLongs(param2);
     var _loc5_:Number = _loc3_.length;
     if(_loc5_ == 0)
     {
        return "";
     }
     var _loc6_:Number = _loc3_[_loc5_ - 1];
     var _loc7_:Number = _loc3_[0];
     var _loc10_:Number = Math.floor(6 + 52 / _loc5_);
     var _loc11_:Number = _loc10_ * this.delta;
     while(_loc11_ != 0)
     {
        _loc9_ = _loc11_ >>> 2 & 3;
        _loc12_ = _loc5_ - 1;
        while(_loc12_ > 0)
        {
           _loc6_ = _loc3_[_loc12_ - 1];
           _loc8_ = (_loc6_ >>> 5 ^ _loc7_ << 2) + (_loc7_ >>> 3 ^ _loc6_ << 4) ^ (_loc11_ ^ _loc7_) + (_loc4_[_loc12_ & 3 ^ _loc9_] ^ _loc6_);
           _loc7_ = _loc3_[_loc12_] = _loc3_[_loc12_] - _loc8_;
           _loc12_--;
        }
        _loc6_ = _loc3_[_loc5_ - 1];
        _loc8_ = (_loc6_ >>> 5 ^ _loc7_ << 2) + (_loc7_ >>> 3 ^ _loc6_ << 4) ^ (_loc11_ ^ _loc7_) + (_loc4_[_loc12_ & 3 ^ _loc9_] ^ _loc6_);
        _loc7_ = _loc3_[0] = _loc3_[0] - _loc8_;
        _loc11_ = _loc11_ - this.delta;
     }
     return Convert.longsToStr(_loc3_);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...