哈哈哈嘿嘿嘻嘻 2014-12-10 13:11 采纳率: 0%
浏览 1737
已采纳

小白用php仿照js写的一个加密方法 就是有问题 求解答

原本的js是一段加密的方法
function checkform()
{
var dcode;
var dcode1;
var dcode2;

dcode=document.form1.pwd.value;
dcode1="";
dcode2=1275903582
dcode2=""+dcode2*137;
var tmpstr;
var dcodelen;
dcodelen=dcode.length;
for (i=1;i<=dcodelen;i++){
tmpstr = dcode.substring(i-1,i);
dcode1=dcode1 + String.fromCharCode(tmpstr.charCodeAt(0)-i-dcode2.substring(i-1,i));
}

document.form1.pwd.value=dcode1;

}

这是我仿照写的php代码 但始终有错
//加密
function encryption($dcode){

    $dcode1=''; 
    $dcode2=1275903582;
    $dcode2 = "".$dcode2 * 137; 
    $tmpstr='';  
    for ($i=1;$i<=count($dcode);$i++)
    { 
            $tmpstr = substr($dcode,$i-1,1); 
            $tmpstr = $this->charCodeAt($tmpstr, 0); 
            $num = $this->fromCharCode($tmpstr-$i-substr($dcode2,$i-1,1)); 
            $dcode1=$dcode1 + $num;
    }  
            $encryDcode=$dcode1; 
            print_r($encryDcode); 
            die(); 
            return $encryDcode; 
    } 

function fromCharCode($codes) {
if (is_scalar($codes))
$codes= func_get_args();
$str= '';
foreach ($codes as $code)
$str.= chr($code);
return $str;
}

function charCodeAt($str, $index)
{
$char = mb_substr($str, $index, 1, 'UTF-8');

if (mb_check_encoding($char, 'UTF-8'))
{
$ret = mb_convert_encoding($char, 'UTF-32BE', 'UTF-8');
return hexdec(bin2hex($ret)); } else { return null;
}
}

  • 写回答

2条回答 默认 最新

  • Go 旅城通票 2014-12-11 03:28
    关注

    这个和你贴出来的js加密后的一样

    
        function encryption($dcode, $dcode2) {
            $dcode1 = "";
            $dcode2 = "" . $dcode2 * 137;
            $tmpstr="";
            $dcodelen =strlen($dcode);
            for ($i = 0; $i < $dcodelen; $i++) {
                $tmpstr = substr($dcode,$i , 1);
                $cd=charCodeAt($tmpstr,0);
    
                $dcode1 = $dcode1 . fromCharCode($cd -( $i+1)- substr($dcode2,$i , 1));
            }
            return $dcode1;
        }
        function fromCharCode($codes) {
          if (is_scalar($codes)) $codes= func_get_args();
          $str= '';
          foreach ($codes as $code) $str.= chr($code);
          return $str;
        }
        function charCodeAt($str, $index){
          $char = mb_substr($str, $index, 1, 'UTF-8'); 
          if (mb_check_encoding($char, 'UTF-8'))    {
            $ret = mb_convert_encoding($char, 'UTF-32BE', 'UTF-8');
            return hexdec(bin2hex($ret));
          }
          return null;
       }
      echo encryption("123456", 1275903582);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大