zoukankan      html  css  js  c++  java
  • paip.PHP实现跨平台跨语言加解密方法

    paip.PHP实现跨平台跨语言加解密方法

     主要是要在ASP和PHP系统模块间进行参数传递,为了方便,不用MD5签名,直接准备使用DES

    加密。。可是ASP和PHP的DES不能相互加觖密。。。好向还有什么CBC模式,IV向量什么的。一

    大堆,调了半天还是不行,算了,还是自己写加密方法吧。。

    密码加密主要的方法就是替换,移位。。另外,

    我的要求是,
    1.需要可以使用密钥
    2.需要算法简单,可以很容易用另外一种语言重写。。DES算法一看就是一大陀,MD,难用。

    PASS。。。虽然效果好,有点复杂,不好重写啊。。
    3.根据强度可以自由组合算法,为了加强加密 效果,可以使用多种翻转算法,这里为了简单,只是

    全部翻转了一下而已。。。
    4.可以多条密钥使用,可以大大加强效果,不输于DES,3DES一类的。
    5.加密非ASCII字符:不可直接加密。。可先用BASE64,URLENCODE转成ASCII字符串再进行

    加密就可能邓..

    这里,我构思了下加密觖密的思路:

    1.先把字符串进行反转
    2.把字符串与KEY组进行循环相加
    3.相加的结果转为16进制字符连起来。。主要是为了省点空间。。
    4.返回结果就可 以了。。。
    5.解密的过程反过来就可以了。。

     PHP调用演示:
     $key="iluvnjyn";
    echo atiDecode("D7D5E2DACF",$key);    显示了解密结果“admin"

    ASP加密演示:
     key_L71723="iluvnjyn"
     msg="admin"
    newstr=atiEncode(msg,key_L71723)  //生成加密结果"D7D5E2DACF"

    ---------------------------PHP源码------------------

    //解密方法
    function atiDecode($msg,$key){

    $key_L71723= $key;
    $key_L71723=$key_L71723.$key_L71723;
    $key_L71723=$key_L71723.$key_L71723;
    $key_L71723=$key_L71723.$key_L71723;;
    $key_L71723=$key_L71723.$key_L71723;;
     
    //$msgarr=explode("-",$msg); //split
    $msgarr=str_split($msg,2); 
    $keyarr= str_split($key_L71723);  
    $newstr="";

    for($i=0;$i< count ($msgarr);$i++){
     $v=$msgarr[$i];
     $charInt=hexdec($v);//  'encode char 
      $keychar=$keyarr[$i];
     $newchar=chr( $charInt-ord($keychar));
     
     $newstr=$newstr.$newchar;
    }
    $newstr=strrev($newstr);
    //'newstr=base64Encode(newstr)
    return $newstr;
    }

    ---------------ASP加密方法源码
    function atiEncode(msg,key)
      
        msg=back_str(msg)   '反转字符串
     dim  key_L71723
     key_L71723= key
        key_L71723=key_L71723+key_L71723
       key_L71723=key_L71723+key_L71723
        key_L71723=key_L71723+key_L71723    
     dim msgarr
     msgarr=str2array(msg)
     dim keyarr
     keyarr=str2array(key_L71723)
     dim newstr
     newstr=""
     '与KEY组进行循环相加
     for i=0 to ubound(msgarr)
      dim char
             char=msgarr(i)
      dim newchar  'int format
      newchar = asc (char)+asc(keyarr(i))
      newchar= hex(newchar)
      
      newstr=newstr+cstr(newchar)
         next 
      
     atiEncode=newstr
    end function

     

  • 相关阅读:
    Python 遍历文件 读取文件夹里面的所有文件
    生活 帝国霸略 辅助工具的实现
    生活 帝国霸略 更换账户登陆 电脑登陆iphone手机账户 电脑手机同步登陆
    Python 颜色检测
    Python 指定窗口截屏
    Python 图片裁剪
    Python 窗口查找
    ES5新增的数组方法
    ES5对象新增的方法
    谈谈对文档碎片的理解
  • 原文地址:https://www.cnblogs.com/attilax/p/15199955.html
Copyright © 2011-2022 走看看