SCRIPT.com.ua
Логин: Пароль:
Регистрация Забыл пароль
МАТЕРИАЛЫ
Поиск
Новости
Материалы
Работа с WDDX в РНР [PHP]
Рецепт по установке web-сервера под Windows [PHP]
Инициализация для Flash Player 8 Beta [Flash]
Криптование [Action Script]
Настрока Homesite под Action Script [Action Script]
Учитесь писать код правильно [PHP]
Пасхальные яйца. [Action Script]
Flash-игры: проще, если знаешь как [Flash]
Установка Ming под win32 Apache+PHP [Action Script]
Wysiwyg HTML Редакторы [DHTML]
Исходники
"Объект" на JavaScript - аналог AsBroadcaster [DHTML]
Запрет кэширования [HTML]
Полупрозрачные картинки, которые 'востанавливаются' при наведении. [DHTML]
Новостная лента v1.2.1 [PHP]
Обход XML-дерева [Action Script]
CDATA и комментарии [XSL]
Кроссразмерный полноэкранный режим [Action Script]
KeyListener [Action Script]
Редирект [HTML]
Текстовый узел [XSL]
Лаборатория
Документация
Файлы
Ссылки
Пользователи
Контакты
Наш выбор
Fight Night Round 3 Sony PSP
Наши партнеры
Среда, 16 Февраля, 2005
Криптование [Action Script]
Класс для AS:
function EncDec() {
 this.hash;
}
//
EncDec.prototype.intToHex = function(i) {
 var j = Math.floor(i/16);
 if (j == 0) {
  var s = " ";
 } else {
  var s = j.toString(16);
  s = s.toUpperCase();
 }
 var k = i-j*16;
 s += k.toString(16);
 s = s.toUpperCase();
 return s;
};
//
EncDec.prototype.xorCharString = function(s) {
 var s1 = this.hash;
 var i = s1.length;
 var j = s.length;
 for (i=0; i<j; i=s1.length) {
  s1 = s1+s1;
 }
 ai = new Array();
 for (k=0; k<j; k++) {
  var c = s1.substring(k, k+1);
  ai[k] = (c.charCodeAt(0) ^ s.charCodeAt(k)+"");
 }
 //trace(ai);
 return ai;
};
//установка ключа
EncDec.prototype.setHash = function(hash) {
 this.hash = hash;
};
//криптинг
EncDec.prototype.Encrypt = function(s) {
 var ai = this.xorCharString(s);
 var s1 = "";
 //
 for (var i = 0; i<ai.length; i++) {
  s1 += this.intToHex(ai[i]);
 }
 return s1;
};


Использование:

//екземпляр
enT = new EncDec();
//установка ключа
enT.setHash("hash");
//криптование
trace(enT.Encrypt("blablabla"));


Кдасс для PHP:

<?
/*
 * encryption and decryption algorythm class
 * for use in any database
 *
 * use hash of 10 characters and XOR comparison with password
 * to convert ASCII to DEC to HEX
 * and back again
 *
 * change hash
 * AJR Nov 3, 2003
 *
 */
 
 class EncDec{
   
    var $hash;
 
    function hexToInt($s, $i)
    {


        (int)$j = $i * 2;
        (string)$s1 = $s;
        (string)$c = substr($s1, $j, 1);  // get the char at position $j, length 1
        (string)$c1 = substr($s1, $j+1, 1); // get the char at postion $j + 1, length 1
        (int)$k = 0;
 
 switch ($c)
  {


  case "A":
  $k += 160;
  break;


  case "B":
         $k += 176;
         break;


  case "C":
         $k += 192;
         break;


  case "D":
         $k += 208;
         break;


  case "E":
         $k += 224;
         break;


  case "F":
         $k += 240;
         break;


  case " ":
  $k += 0;
  break;


  default:
 
  (int)$k = $k + (16 * (int)$c);
  break;
  }
       
 switch ($c1)
  {
 
  case "A":
  $k += 10;
  break;


  case "B":
         $k += 11;
         break;


  case "C":
         $k += 12;
         break;


  case "D":
         $k += 13;
         break;


  case "E":
         $k += 14;
         break;


  case "F":
         $k += 15;
         break;


  case " ":
  $k += 0;
         break;


  default:

         $k += (int)$c1;   
  break;
  }
       
 return $k;
    }


    function hexToIntArray($s)
    {
        (string)$s1 = $s;
        (int)$i = strlen($s1);
        (int)$j = $i / 2;
        for($l = 0; $l < $j; $l++)
        {
            (int)$k = $this->hexToInt($s1,$l);
     $ai[$l] = $k;
 }


        return $ai;
    }


    function charToInt($c)
    {
        $ac[0] = $c;
     return $ac;
    }


    function xorString($ai)
    {
        $s = $this->hash; //
        (int)$i = strlen($s);
        $ai1 = $ai;
        (int)$j = count($ai1);
        for($i = 0; $i < $j; $i = strlen($s))
            $s = $s.$s;


        for($k = 0; $k < $j; $k++)
        {
            (string)$c = substr($s,$k,1);
     $ac[$k] = chr($ai1[$k] ^ ord($c));
 }


        (string)$s1 = implode('', $ac);
        return $s1;
    }


    function phpDecrypt($s)
    {
        {
            $ai = $this->hexToIntArray($s);
     (string)$s1 = $this->xorString($ai);
     return $s1;
        }
    }


    function intToHex($i)
    {
        (int)$j = (int)$i / 16;
        if ((int)$j == 0) {
            (string)$s = " ";
 }
        else
 {
    (string)$s = strtoupper(dechex($j));
        }  
        (int)$k = (int)$i - (int)$j * 16;
        (string)$s = $s.strtoupper(dechex($k));


 return $s; 
    }


    function xorCharString($s)
    {
        $ac = preg_split('//', $s, -1, PREG_SPLIT_NO_EMPTY);
        (string)$s1 = $this->hash;
        (int)$i = strlen($s1);
        (int)$j = count($ac);
        for($i=0; $i < $j; $i = strlen($s1))
        {
     $s1 = $s1.$s1;
 }


        for($k = 0; $k < $j; $k++)
        {
     $c = substr($s1,$k,1);
     $ai[$k] = ord($c) ^ ord($ac[$k]);
        }


        return $ai;
    }


    function phpEncrypt($s)
    {
        $ai = $this->xorCharString($s);
 $s1 = "";
        for($i = 0; $i < count($ai); $i++)
            $s1 = $s1.$this->intToHex((int)$ai[$i]);
        return $s1;
    }


}
/*
 *
 * end of class declaration
 *
 *
 */
?>


Как использовать:

<?
/* include the class */
include "encdec.class.php";


/* this is our sample password */
$word_in = "password";


/* create a new instance of EncDec */
$test = &New EncDec;


/* a hash to do our XOR against */
//$test->hash = "aTestHash";  // change to whatever
$test->hash = "veryLongAndWindingHash";



$test_out = $test->phpEncrypt($word_in);
$test_out2 = $test->phpDecrypt($test->phpEncrypt($word_in));


echo "Encryption of $word_in: $test_out";
echo "<br><br>";
echo "Decryption of $test_out: $test_out2";


?>


Опубликовал: Syo (17:46) | комментарии [0]
< назад
Вверх © Copyright 2004-2014 Script.com.ua



Версия для печати