解密的措施,加密解密函数代码

by admin on 2019年8月17日

先后传参的进度中对参数的管理大范围的有 urlencode rawurlencode
等等这个函数,但在实操中作者开采这几个函数处理起来总是会出些难点,最普及的urlencode在网页三番两次串的跳转进度中传参对&那一个标识总是管理的不正常。经考试,小编发现照旧使用base64_encode加密然后传参来的可信赖。

复制代码 代码如下:

不可逆的加密函数为:md5()、crypt()
md5() 用来计量 MD5 哈稀。语法为:string md5(string str);
crypt() 将字符串用 UNIX 的正经加密 DES
模块加密。那是单向的加密函数,不能够解密。欲比对字符串,将已加密的字符串的头二个字符放在
salt 的参数中,再比对加密后的字符串。语法为:string crypt(string str,
string [salt]);
可转换局面的加密为:base64_encode()、urlencode()
相对应的解密函数:base64_解密的措施,加密解密函数代码。decode() 、urldecode()

大家须求在url中传送中文字符或是别的的html等特殊字符,就像总会有各个乱,不一致的浏览器对他们的编码又分裂,

在php中对字符串举行base64_encode加密处理很轻松,并且有相应的base64_decode函数实行解密,在js中却没有响应的拍卖方法,上面就和豪门分享贰个在js中落到实处php语言中的base64_encode
base64_decode的方法。

$returnUrl = rawurlencode(base64_解密的措施,加密解密函数代码。encode($returnUrl)); //编码

base64_encode() 将字符串以 MIME BASE64
编码。此编码格局可以让中文字恐怕图片也能在网络上八面见光传输。语法为string
base64_encode(string data); 它的解密函数为:string
base64_decode(string encoded_data); 将复回原样
urlencode() 将字符串以 U昂科威L 编码。举个例子空格就能够造成加号。语法为:string
urlencode(string str);
它的解密函数为:string urldecode(string str); 将复回原样

对此华语,一般的做法是:

function base64encode(str){
    var out,i,len,base64EncodeChars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
    var c1,c2,c3;
    len=str.length;
    i=0;
    out="";
    while(i<len){
        c1=str.charCodeAt(i++)&0xff;
        if(i==len){
            out+=base64EncodeChars.charAt(c1>>2);
            out+=base64EncodeChars.charAt((c1&0x3)<<4);
            out+="==";
            break;
        }
        c2=str.charCodeAt(i++);
        if(i==len){
            out+=base64EncodeChars.charAt(c1>>2);
            out+=base64EncodeChars.charAt(((c1&0x3)<<4)|((c2&0xF0)>>4));
            out+=base64EncodeChars.charAt((c2&0xF)<<2);
            out+="=";
            break;
        }
        c3=str.charCodeAt(i++);
        out+=base64EncodeChars.charAt(c1>>2);
        out+=base64EncodeChars.charAt(((c1&0x3)<<4)|((c2&0xF0)>>4));
        out+=base64EncodeChars.charAt(((c2&0xF)<<2)|((c3&0xC0)>>6));
        out+=base64EncodeChars.charAt(c3&0x3F);
    }
    return out;
}
function base64decode(str){
    var c1,c2,c3,c4,base64DecodeChars=new Array(-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1);
    var i,len,out;
    len=str.length;
    i=0;
    out="";
    while(i<len){
        /* c1 */
        do{
            c1=base64DecodeChars[str.charCodeAt(i++)&0xff];
        }while(i<len&&c1==-1);
        if(c1==-1) break;

        /* c2 */
        do{
            c2=base64DecodeChars[str.charCodeAt(i++)&0xff];
        }while(i<len&&c2==-1);
        if(c2==-1) break;
        out+=String.fromCharCode((c1<<2)|((c2&0x30)>>4));
        /* c3 */
        do{
            c3=str.charCodeAt(i++)&0xff;
            if(c3==61) return out;
            c3=base64DecodeChars[c3];
        }while(i<len&&c3==-1);
        if(c3==-1) break;
        out+=String.fromCharCode(((c2&0XF)<<4)|((c3&0x3C)>>2));
        /* c4 */
        do{
            c4=str.charCodeAt(i++)&0xff;
            if(c4==61) return out;
            c4=base64DecodeChars[c4];
        }while(i<len&&c4==-1);
        if(c4==-1) break;
        out+=String.fromCharCode(((c3&0x03)<<6)|c4);
    }
    return out;
}
function utf16to8(str){
    var out,i,len,c;
    out="";
    len=str.length;
    for (i=0;i<len;i++){
        c=str.charCodeAt(i);
        if((c>=0x0001)&&(c<=0x007F)){
            out+=str.charAt(i);
        } else if(c>0x07FF){
            out+=String.fromCharCode(0xE0|((c>>12)&0x0F));
            out+=String.fromCharCode(0x80|((c>>6)&0x3F));
            out+=String.fromCharCode(0x80|((c>>0)&0x3F));
        } else {
            out+=String.fromCharCode(0xC0|((c>>6)&0x1F));
            out+=String.fromCharCode(0x80|((c>>0)&0x3F));
        }
    }
    return out;
}
function utf8to16(str){
    var out,i,len,c;
    var char2,char3;
    out="";
    len=str.length;
    i=0;
    while(i<len){
        c=str.charCodeAt(i++);
        switch (c>>4){
        case 0:
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
        case 6:
        case 7:
            // 0xxxxxxx
            out+=str.charAt(i-1);
            break;
        case 12:
        case 13:
            // 110x xxxx   10xx xxxx
            char2=str.charCodeAt(i++);
            out+=String.fromCharCode(((c&0x1F)<<6)|(char2&0x3F));
            break;
        case 14:
            // 1110 xxxx  10xx xxxx  10xx xxxx
            char2=str.charCodeAt(i++);
            char3=str.charCodeAt(i++);
            out+=String.fromCharCode(((c&0x0F)<<12)|((char2&0x3F)<<6)|((char3&0x3F)<<0));
            break;
        }
    }
    return out;
}

$returnUrl = parse_str(base64_decode($returnUrl));//解码 或者
$returnUrl = base64_decode($returnUrl);//解码

看段代码:

把这个文本字符串传给url在此之前,先实行urlencode($text)一下;

代码摘抄自网络,但做了些革新,英特网流传的局地代码证明了多个一点都不小的全局变量,相对起来的话对品质有部分震慑。

//或者

复制代码 代码如下:

然则对于有个别很“危急”的字符,比方说html字符,乃至是SQL注入相关的字符,固然很明显的传给系统,出于安全挂念,系统一般都会把它们过滤掉的。

javascript实现base64_encode加密,解密的函数压缩下载

//不明了怎么, 上边第一种解码格局赶回的是null, 求解
$returnUrl = base64_encode($returnUrl); //编码
$returnUrl = base64_decode($returnUrl);//解码

<?php
define(“str”,”墨剑”);
echo ‘md5 加密后的结果为:’.md5(str).'<br>’;//md5 加密
echo ‘crypt加密后的结果为:’.crypt(str,str).'<br>’;// crypt加密
$base64encode=base64_encode(str);// base64_encode() 加密
echo ‘base64_encode加密后的结果为:’.$base64encode.'<br>’;
echo
‘base64_decode解密后的结果为:’.base64_decode($base64encode).'<br>’;
//base64_decode()解密
$urlencode=urlencode(str); //urlencode() 加密
echo ‘urlencode加密后的结果为:’.$urlencode.'<br>’;
echo
‘urldecode解密后的结果为:’.urldecode($urlencode).'<br>’;//urldecode()
解密
?>

于今,大家须求那个危急字符,该如此办?

代码实例参照:base64编码加密,解密

那是一种格局,不过是最安全的,因为借使驾驭那一个原理就足以解开,可是你的须要不高那样就能够了.

出口的结果为:
md5 加密后的结果为:ea796af15c74e90faeba49576fa7984b
crypt加密后的结果为:墨ylCzgTtYXPs
base64_encode加密后的结果为:xKu9ow==
base64_decode解密后的结果为:墨剑
urlencode加密后的结果为:%C4%AB%BD%A3
urldecode解密后的结果为:墨剑

自己想开的章程是 先给它们 base64_encode($text) 编码,到服务端时,又给它们
base64_decode($text) 解码,

您恐怕感兴趣的篇章

  • select into from 提示 Undeclared variable…..错误的消除办法
  • javascript的字符串编码函数escape,encodeU智跑I,encodeUXC90IComponent比较与剖判
  • php提醒马克西姆um execution time of 30 seconds
    exceeded…错误的消除办法
  • PHP加密解密的函数
  • jquery live change事件在IE下失效的消除办法
  • PHP加密解密的类
  • Firefox 提醒event is not defined错误的消除办法
  • XDebug的进程条停在1/4,提醒waiting for XDebug session错误的解决办法

urlencode
rawurlencode
等等那些函数,但在实操中笔者开掘这个函数管理起来总是会出些难点,最…

设若要很安全的那就要用特地的加密类了,嘻嘻.

您只怕感兴趣的小说:

  • php中也许用来加密字符串的函数[base64_encode、urlencode、sha1]
  • 用VBS模拟完结PHP的sha1_file函数效果代码
  • PHP实现加密的两种艺术介绍
  • 2个相比美丽的PHP加密解密函数分享
  • php中base64_decode与base64_encode加密解密函数实例
  • PHP中加密解密函数与DES加密解密实例
  • php中AES加密解密的事例小结
  • PHP可逆加密/解密函数分享
  • PHP 加密解密内部算法
  • php基于mcrypt的加密解密实例
  • php rsa加密解密使用详解
  • PHP实现的简练sha1加密作用示例

相似很周全,但是在应用的历程中又遇上三个标题,base64_encode
编码后的字符串中包含 “/”, “+”, “=” 等字符,

您或然感兴趣的稿子:

  • php中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
  • 2个相比杰出的PHP加密解密函数分享
  • PHP中加密解密函数与DES加密解密实例
  • php中AES加密解密的事例小结
  • PHP 加密解密内部算法
  • PHP可逆加密/解密函数分享
  • PHP 加密与解密的创新优品
  • php中base64_decode与base64_encode加密解密函数实例
  • 微盾PHP脚本加密专家php解密算法
  • php rsa加密解密使用详解
  • PHP rsa加密解密使用办法
  • php达成U奥迪Q5L加密解密的主意

base64_encode()函数由于要在url中传用户输入观点(少许的开始和结果),当用户提交(post提交)过来的是三个数组.所以小编把意见用bse64_encode()函数给加密.当跳转随处理页面时,笔者再给get接收,这时出现两侧加密的多寡不对.少了一个+字符.

用户提交加密:

tPK9tNPNyKUsuse6xyYjNDY7JiM0NjsufMavwcEhfMyrxq/BwcHLLMjDztLO3tPvLNXmz+vI69ehsKEhfHw=

在管理页面用get接收到的:

tPK9tNPNyKUsuse6xyYjNDY7JiM0NjsufMavwcEhfMyrxq/BwcHLLMjDztLO3tPvLNXmz
vI69ehsKEhfHw=

相对来讲找到少了贰个加号,不知情是什么样来头导制的(估摸或许是get时,+字符恐怕否博取吧!).还请大师指引.

这么些字符在url编码中又是特殊字符,譬如 “+” ,它就代表
“空格”,可是区别的浏览器对“空格”的编码又不均等,有的是用“+”表示,有的是用“百分之四十”表示,也便是说,让这个base64_encode编码后的字符串在url中传送,用分歧的浏览器去浏览时,服务端获得值不平等。

于是乎,想到了二个折中方法,先将那么些base64编码后的古怪字符替换掉,到服务端后,又替换回来:

斩草除根办法:

一.在用户提交加密串的大运,作者把+字符给换来别的字字符.如:str_replace(‘+’,
‘_’, $content);
二.在管理页面重新转移三次:如:str_replace(‘_必发88,’, ‘+’, $content);

复制代码 代码如下:

function base_encode($str) {
        $src  = array(“/”,”+”,”=”);
        $dist = array(“_a”,”_b”,”_c”);
        $old  = base64_encode($str);
        $new  = str_replace($src,$dist,$old);
        return $new;
}

function base_decode($str) {
        $src = array(“_a”,”_b”,”_c”);
        $dist  = array(“/”,”+”,”=”);
        $old  = str_replace($src,$dist,$str);
        $new = base64_decode($old);
        return $new;
}

上边是在浏览器中获得的效果

xOO6w6Osuf65_aiy_atL_b00Ke5_b8jnus6ho6GjoaM_c

urldecode实例方法很简短

urldecode ( string $str )
解码给出的已编码字符串中的任何 %##。再次回到解码后的字符串。

Example #1 urldecode() 例子

复制代码 代码如下:

<?php
$a = explode(‘&’, $QUERY_STRING);
$i = 0;
while ($i < count($a)) {
    $b = split(‘=’, $a[$i]);
    echo ‘Value for parameter ‘, htmlspecialchars(urldecode($b[0])),
         ‘ is ‘, htmlspecialchars(urldecode($b[1])), “<br />
“;
    $i++;
}
?>

您可能感兴趣的篇章:

  • PHP fopen
    读取带汉语U奥迪Q7L地址的一些观念
  • PHP中文URL编解码(urlencode()rawurlencode()
  • php中剖判带汉语字符的url函数共享
  • PHP消除U凯雷德L中文GBK乱码难点的三种形式
  • php下近日为目最全的CU景逸SUVL粤语表明
  • php
    url地址栏传普通话乱码化解方法集结
  • php管理带有普通话URubiconL的不二等秘书技

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图