Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Функция шифрования текста dsCrypt()

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: PHP
orlov_nikita
Отправлено: 12 Января, 2011 - 19:01:21
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




Эта функция шифрует текст. Его потом можно будет расшифровать.
например
echo dsCrypt('php'); //Выведет "IQc" (без кавычек)
echo dsCrypt('IQc'); //Выведет "php";


PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. /**
  4.  * Обратимое шифрование методом "Двойного квадрата" (Reversible crypting of "Double square" method)
  5.  * @param  String $input   Строка с исходным текстом
  6.  * @param  bool   $decrypt Флаг для дешифрования
  7.  * @return String          Строка с результатом Шифрования|Дешифрования
  8.  * @author runcore
  9.  */
  10. function dsCrypt($input,$decrypt=false) {
  11.     $o = $s1 = $s2 = array(); // Arrays for: Output, Square1, Square2
  12.     // формируем базовый массив с набором символов
  13.     $basea = array('?','(','@',';','$','#',"]","&",'*'); // base symbol set
  14.     $basea = array_merge($basea, range('a','z'), range('A','Z'), range(0,9) );
  15.     $basea = array_merge($basea, array('!',')','_','+','|','%','/','[','.',' ') );
  16.     $dimension=9; // of squares
  17.     for($i=0;$i<$dimension;$i++) { // create Squares
  18.         for($j=0;$j<$dimension;$j++) {
  19.             $s1[$i][$j] = $basea[$i*$dimension+$j];
  20.             $s2[$i][$j] = str_rot13($basea[($dimension*$dimension-1) - ($i*$dimension+$j)]);
  21.         }
  22.     }
  23.     unset($basea);
  24.     $m = floor(strlen($input)/2)*2; // !strlen%2
  25.     $symbl = $m==strlen($input) ? '':$input[strlen($input)-1]; // last symbol (unpaired)
  26.     $al = array();
  27.     // crypt/uncrypt pairs of symbols
  28.     for ($ii=0; $ii<$m; $ii+=2) {
  29.         $symb1 = $symbn1 = strval($input[$ii]);
  30.         $symb2 = $symbn2 = strval($input[$ii+1]);
  31.         $a1 = $a2 = array();
  32.         for($i=0;$i<$dimension;$i++) { // search symbols in Squares
  33.             for($j=0;$j<$dimension;$j++) {
  34.                 if ($decrypt) {
  35.                     if ($symb1===strval($s2[$i][$j]) ) $a1=array($i,$j);
  36.                     if ($symb2===strval($s1[$i][$j]) ) $a2=array($i,$j);
  37.                     if (!empty($symbl) && $symbl===strval($s2[$i][$j])) $al=array($i,$j);
  38.                 }
  39.                 else {
  40.                     if ($symb1===strval($s1[$i][$j]) ) $a1=array($i,$j);
  41.                     if ($symb2===strval($s2[$i][$j]) ) $a2=array($i,$j);
  42.                     if (!empty($symbl) && $symbl===strval($s1[$i][$j])) $al=array($i,$j);
  43.                 }
  44.             }
  45.         }
  46.         if (sizeof($a1) && sizeof($a2)) {
  47.             $symbn1 = $decrypt ? $s1[$a1[0]][$a2[1]] : $s2[$a1[0]][$a2[1]];
  48.             $symbn2 = $decrypt ? $s2[$a2[0]][$a1[1]] : $s1[$a2[0]][$a1[1]];
  49.         }
  50.         $o[] = $symbn1.$symbn2;
  51.     }
  52.     if (!empty($symbl) && sizeof($al)) // last symbol
  53.         $o[] = $decrypt ? $s1[$al[1]][$al[0]] : $s2[$al[1]][$al[0]];
  54.     return implode('',$o);
  55. }
  56.  ?>
  57.  








Взял здесь

(Отредактировано автором: 12 Января, 2011 - 19:04:55)

 
 Top
Sanek_OS9
Отправлено: 06 Октября, 2012 - 21:25:52
Post Id



Гость


Покинул форум
Сообщений всего: 115
Дата рег-ции: Окт. 2012  
Откуда: Украина


Помог: 0 раз(а)




Эта функция только латинские символы шифрует, а как сделать чтоб и кирилицу шифровало?
 
 Top
DeepVarvar Супермодератор
Отправлено: 07 Октября, 2012 - 01:29:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Sanek_OS9 пишет:
а как сделать чтоб и кирилицу шифровало?
base64
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Пользовательские функции »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB