加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php数字加解密的软件程序

发布时间:2023-09-26 11:07:59 所属栏目:PHP教程 来源:
导读:<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2016/11/1
* Time: 12:26
*/
/*把数字转换成字符对应解析
* @param mixed $in String or long input to translate
<?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); 
 

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章