[ Index ]
 

Code source de phpMyAdmin 2.10.3

Accédez au Source d'autres logiciels libres

Classes | Fonctions | Variables | Constantes | Tables

title

Body

[fermer]

/libraries/ -> mcrypt.lib.php (source)

   1  <?php
   2  
   3  /* $Id: mcrypt.lib.php 9657 2006-11-02 10:51:57Z nijel $ */
   4  // vim: expandtab sw=4 ts=4 sts=4:
   5  
   6  /**
   7   * Initialization
   8   */
   9  
  10  // Store the initialization vector because it will be needed for
  11  // further decryption. I don't think necessary to have one iv
  12  // per server so I don't put the server number in the cookie name.
  13  
  14  if (!isset($_COOKIE['pma_mcrypt_iv'])) {
  15      srand((double) microtime() * 1000000);
  16      $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_CBC), MCRYPT_RAND);
  17      PMA_setCookie('pma_mcrypt_iv', base64_encode($iv));
  18  } else {
  19      $iv = base64_decode($_COOKIE['pma_mcrypt_iv']);
  20  }
  21  
  22  /**
  23   * String padding
  24   *
  25   * @param   string  input string
  26   * @param   integer length of the result
  27   * @param   string  the filling string
  28   * @param   integer padding mode
  29   *
  30   * @return  string  the padded string
  31   *
  32   * @access  public
  33   */
  34  function full_str_pad($input, $pad_length, $pad_string = '', $pad_type = 0) {
  35      $str = '';
  36      $length = $pad_length - strlen($input);
  37      if ($length > 0) { // str_repeat doesn't like negatives
  38          if ($pad_type == STR_PAD_RIGHT) { // STR_PAD_RIGHT == 1
  39              $str = $input.str_repeat($pad_string, $length);
  40          } elseif ($pad_type == STR_PAD_BOTH) { // STR_PAD_BOTH == 2
  41              $str = str_repeat($pad_string, floor($length/2));
  42              $str .= $input;
  43              $str .= str_repeat($pad_string, ceil($length/2));
  44          } else { // defaults to STR_PAD_LEFT == 0
  45              $str = str_repeat($pad_string, $length).$input;
  46          }
  47      } else { // if $length is negative or zero we don't need to do anything
  48          $str = $input;
  49      }
  50      return $str;
  51  }
  52  /**
  53   * Encryption using blowfish algorithm (mcrypt)
  54   *
  55   * @param   string  original data
  56   * @param   string  the secret
  57   *
  58   * @return  string  the encrypted result
  59   *
  60   * @access  public
  61   *
  62   * @author  lem9
  63   */
  64  function PMA_blowfish_encrypt($data, $secret) {
  65      global $iv;
  66      // Seems we don't need the padding. Anyway if we need it,
  67      // we would have to replace 8 by the next 8-byte boundary.
  68      //$data = full_str_pad($data, 8, "\0", STR_PAD_RIGHT);
  69      return base64_encode(mcrypt_encrypt(MCRYPT_BLOWFISH, $secret, $data, MCRYPT_MODE_CBC, $iv));
  70  }
  71  
  72  /**
  73   * Decryption using blowfish algorithm (mcrypt)
  74   *
  75   * @param   string  encrypted data
  76   * @param   string  the secret
  77   *
  78   * @return  string  original data
  79   *
  80   * @access  public
  81   *
  82   * @author  lem9
  83   */
  84  function PMA_blowfish_decrypt($encdata, $secret) {
  85      global $iv;
  86      return trim(mcrypt_decrypt(MCRYPT_BLOWFISH, $secret, base64_decode($encdata), MCRYPT_MODE_CBC, $iv));
  87  }
  88  
  89  ?>


Généré le : Mon Nov 26 15:18:20 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics