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

     

  • 相关阅读:
    详解机器学习中的熵、条件熵、相对熵、交叉熵
    使用Keras进行深度学习:(三)使用text-CNN处理自然语言(上)
    粒子群优化算法(PSO)之基于离散化的特征选择(FS)(一)
    DNN模型训练词向量原理
    TensorFlow 实战卷积神经网络之 LeNet
    五大经典卷积神经网络介绍:LeNet / AlexNet / GoogLeNet / VGGNet/ ResNet
    Oracle 查询版本号
    C# 递归获取 文件夹的 所有文件
    SQL Server 常用语句
    Oracle 导入大量数据
  • 原文地址:https://www.cnblogs.com/attilax/p/15199955.html
Copyright © 2011-2022 走看看