设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 手机 数据
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php数字加密解密的程序

发布时间:2022-02-24 13:07 所属栏目:121 来源:互联网
导读:?php /** * Created by PhpStorm. * User: Administrator * Date: 2016/11/1 * Time: 12:26 */ /*把数字转换成字符对应解析 * @param mixed $in String or long input to translate * @param boolean $to_num Reverses translation when true * @param mixed
  <?php
  /**
   * Created by PhpStorm.
   * User: Administrator
   * Date: 2016/11/1
   * Time: 12:26
   */
  /*把数字转换成字符对应解析
   * @param mixed   $in    String or long input to translate
   * @param boolean $to_num  Reverses translation when true
   * @param mixed   $pad_up  Number or boolean padds the result up to a specified length
   * @param string  $passKey Supplying a password makes it harder to calculate the original ID
   */
  function alphaID($in, $to_num = false, $pad_up = false, $passKey = null)
  {
      $index = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
      if ($passKey !== null) {
          // Although this function's purpose is to just make the
          // ID short - and not so much secure,
          // with this patch by Simon Franz (http://blog.snaky.org/)
          // you can optionally supply a password to make it harder
          // to calculate the corresponding numeric ID
  
          for ($n = 0; $n<strlen($index); $n++) {
              $i[] = substr( $index,$n ,1);
          }
  
          $passhash = hash('sha256',$passKey);
          $passhash = (strlen($passhash) < strlen($index))
              ? hash('sha512',$passKey)
              : $passhash;
  
          for ($n=0; $n < strlen($index); $n++) {
              $p[] =  substr($passhash, $n ,1);
          }
  
          array_multisort($p,  SORT_DESC, $i);
          $index = implode($i);
      }
  
      $base  = strlen($index);
  
      if ($to_num) {
          // Digital number  <<--  alphabet letter code
          $in  = strrev($in);
          $out = 0;
          $len = strlen($in) - 1;
          for ($t = 0; $t <= $len; $t++) {
              $bcpow = bcpow($base, $len - $t);
              $out   = $out + strpos($index, substr($in, $t, 1)) * $bcpow;
          }
  
          if (is_numeric($pad_up)) {
              $pad_up--;
              if ($pad_up > 0) {
                  $out -= pow($base, $pad_up);
              }
          }
          $out = sprintf('%F', $out);
          $out = substr($out, 0, strpos($out, '.'));
      } else {
          // Digital number  -->>  alphabet letter code
          if (is_numeric($pad_up)) {
              $pad_up--;
              if ($pad_up > 0) {
                  $in += pow($base, $pad_up);
              }
          }
  
          $out = "";
          for ($t = floor(log($in, $base)); $t >= 0; $t--) {
              $bcp = bcpow($base, $t);
              $a   = floor($in / $bcp) % $base;
              $out = $out . substr($index, $a, 1);
              $in  = $in - ($a * $bcp);
          }
          $out = strrev($out); // reverse
      } //Cuoxin.com
  
      return $out;
  }
  $str =  alphaID("1245");
  echo $str."<br/>";
  echo  alphaID($str,true); 

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读