文档章节

字符串双向加密

花_生壳
 花_生壳
发布于 2016/03/29 17:12
字数 240
阅读 11
收藏 0
/*********************************************************************
函数名称:encrypt
函数作用:加密解密字符串
使用方法:
加密     :encrypt('str','E','qingdou');
解密     :encrypt('被加密过的字符串','D','qingdou');
参数说明:
$string   :需要加密解密的字符串
$operation:判断是加密还是解密:E:加密   D:解密
$key      :加密的钥匙(密匙);
 *********************************************************************/
function encrypt($string,$operation,$key='')
{
    $src  = array("/","+","=");
    $dist = array("_a","_b","_c");
    if($operation=='D'){$string  = str_replace($dist,$src,$string);}
    $key=md5($key);
    $key_length=strlen($key);
    $string=$operation=='D'?base64_decode($string):substr(md5($string.$key),0,8).$string;
    $string_length=strlen($string);
    $rndkey=$box=array();
    $result='';
    for($i=0;$i<=255;$i++)
    {
        $rndkey[$i]=ord($key[$i%$key_length]);
        $box[$i]=$i;
    }
    for($j=$i=0;$i<256;$i++)
    {
        $j=($j+$box[$i]+$rndkey[$i])%256;
        $tmp=$box[$i];
        $box[$i]=$box[$j];
        $box[$j]=$tmp;
    }
    for($a=$j=$i=0;$i<$string_length;$i++)
    {
        $a=($a+1)%256;
        $j=($j+$box[$a])%256;
        $tmp=$box[$a];
        $box[$a]=$box[$j];
        $box[$j]=$tmp;
        $result.=chr(ord($string[$i])^($box[($box[$a]+$box[$j])%256]));
    }
    if($operation=='D')
    {
        if(substr($result,0,8)==substr(md5(substr($result,8).$key),0,8))
        {
            return substr($result,8);
        }
        else
        {
            return'';
        }
    }
    else
    {
        $rdate  = str_replace('=','',base64_encode($result));
        $rdate  = str_replace($src,$dist,$rdate);
        return $rdate;
    }
}


© 著作权归作者所有

下一篇: jq ajax
花_生壳
粉丝 2
博文 9
码字总数 1115
作品 0
石家庄
程序员
私信 提问
Java加解密工具类v1.1

PS:MD5不是加密!(:зゝ∠)好了,不用再喷了 v1.0 练习的产物,所以没写什么注释,最好去网上找些教程看会比较好理解~ 支持单向加密:MD5、SHA1; 支持双向加密:DES、AES; ------------- ...

linin630
2016/09/13
149
0
Java中常用的加密方法(JDK) (转)

加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。大体上分为双向加密和单向加密,而双向加密又分为对称...

hulubo
2012/04/08
477
3
Https基础知识与开发过程中的常见坑点

一.http与https Http(HyperText Transfer Protocol 超文本传输协议),是互联网上使用最广泛的一种协议,所有WWW文件必须遵循的标准。HTTP协议传输的数据都是未加密的,也就是明文的,因此使用...

数齐
2018/06/23
0
0
java 常见的加密算法总结

package com.sh.springboottdemo2.util; import com.sun.org.apache.xerces.internal.impl.dv.util.Base64; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.c......

Pluto_Note
07/11
33
0
.net 安卓IOS跨平台des加解密双向的(可以互相加解密)

http://blog.sina.com.cn/s/blog_beda09820102v5fu.html .net 安卓IOS跨平台des加解密双向的(可以互相加解密) #region 跨平台加解密(c# 安卓 IOS) // public static string sKey = "1234......

壹峰
2018/07/25
6
0

没有更多内容

加载失败,请刷新页面

加载更多

如何编写高质量的 JS 函数(1) -- 敲山震虎篇

本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/7lCK9cHmunvYlbm7Xi7JxQ 作者:杨昆 一千个读者,有一千个哈姆雷特。 此系列文章将会从函数的执行机制、鲁棒性、函...

vivo互联网技术
38分钟前
5
0
学会这5个Excel技巧,让你拒绝加班

在网上,随处都可以看到Excel技巧,估计已看腻了吧?但下面5个Excel技巧会让你相见恨晚。关键的是它们个个还很实用 图一 技巧1:快速删除边框 有时当我们处理数据需要去掉边框,按Ctrl+Shif...

干货趣分享
今天
11
0
JS基础-该如何理解原型、原型链?

JS的原型、原型链一直是比较难理解的内容,不少初学者甚至有一定经验的老鸟都不一定能完全说清楚,更多的"很可能"是一知半解,而这部分内容又是JS的核心内容,想要技术进阶的话肯定不能对这个...

OBKoro1
今天
9
0
高防CDN的出现是为了解决网站的哪些问题?

高防CDN是为了更好的服务网络而出现的,是通过高防DNS来实现的。高防CDN是通过智能化的系统判断来路,再反馈给用户,可以减轻用户使用过程的复杂程度。通过智能DNS解析,能让网站访问者连接到...

云漫网络Ruan
今天
15
0
OSChina 周一乱弹 —— 熟悉的味道,难道这就是恋爱的感觉

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @xiaoshiyue :好久没分享歌了分享张碧晨的单曲《今后我与自己流浪》 《今后我与自己流浪》- 张碧晨 手机党少年们想听歌,请使劲儿戳(这里)...

小小编辑
今天
3.3K
25

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部