文档章节

PHP的加密解密字符串函数

别人说我名字很长
 别人说我名字很长
发布于 2014/01/04 10:50
字数 278
阅读 2364
收藏 4
点赞 0
评论 1

程序中经常使用的PHP加密解密字符串函数

/*********************************************************************
    函数名称:encrypt
    函数作用:加密解密字符串
    使用方法:
    加密     :encrypt('str','E','nowamagic');
    解密     :encrypt('被加密过的字符串','D','nowamagic');
    参数说明:
    $string   :需要加密解密的字符串
    $operation:判断是加密还是解密:E:加密   D:解密
    $key      :加密的钥匙(密匙);
    *********************************************************************/
	function encrypt($string,$operation,$key='')
    {
        $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
        {
            return str_replace('=','',base64_encode($result));
        }
    }



使用方法

$id = 132;
	
$token = encrypt($id, 'E', 'a');
	
echo '加密:'.encrypt($id, 'E', 'a');
echo '<br />';
	
echo '解密:'.encrypt($token, 'D', 'a');



© 著作权归作者所有

共有 人打赏支持
别人说我名字很长
粉丝 55
博文 243
码字总数 97391
作品 0
济南
程序员
加载中

评论(1)

lock-li
lock-li
有C#版吗?
php的加密函数 md5,crypt,base64_encode 等使用介绍

php 在做注册、登录或是url 传递参数时都会用到 字符变量的加密,下面我们就来简单的介绍下:php 自带的加密函数 不可逆的加密函数为:md5()、crypt() md5() 用来计算 MD5 哈稀。语法为:str...

Junn ⋅ 2013/01/24 ⋅ 0

浅谈 PHP 中的多种加密技术及代码示例

同样是一道面试答错的问,面试官问我非对称加密算法中有哪些经典的算法? 当时我愣了一下,因为我把非对称加密与单项散列加密的概念弄混淆了,所以更不用说什么非对称加密算法中有什么经典算...

snowing1990 ⋅ 2016/04/13 ⋅ 0

mysql数据库字段加密函数

php程序中有内置的aes算法函数可以完成加密和解密,但aes算法有个特点:使用同样的明文和秘钥加密得到的结果每次都不一样,这是它的优点,但在做密文字符串比较的时候就会比较麻烦。 加密:先...

码上有春天 ⋅ 2016/05/26 ⋅ 0

2个比较经典的PHP加密解密函数

项目中有时我们需要使用PHP将特定的信息进行加密,也就是通过加密算法生成一个加密字符串,这个加密后的字符串可以通过解密算法进行解密,便于程序对解密后的信息进行处理。最常见的应用在用...

Yomut ⋅ 05/04 ⋅ 0

PHP实现各种经典算法

二分查找(数组里查找某个元素) 顺序查找(数组里查找某个元素) 线性表的删除(数组中实现) 冒泡排序(数组排序) 快速排序(数组排序) 字符串长度 截取子串 字符串翻转 字符串比较 查找...

zhiqiangw ⋅ 2016/12/07 ⋅ 0

php openssl base64解密

一、最近有项目接入了第四方支付,第四方支付提供的文档需要两边进行openssl配合私钥、公钥进行RSA加密来双方通信 二、环境说明 1、LAMP、LNMP都可以,我的环境暂时是LAMP 2、php先安装opens...

霍比特人666 ⋅ 2017/09/24 ⋅ 0

PHP 部分函数

PHP ucwords() 实例 把每个单词的首字符转换为大写: <?phpecho ucwords("hello world");?> 定义和用法 ucwords() 函数把字符串中每个单词的首字符转换为大写。 注释:该函数是二进制安全的。...

BearCatYN ⋅ 2015/12/31 ⋅ 0

PHP对字符串加密解密的函数

加密解密在一个系统中的应用是非常常见的需求,PHP做的网站中,也会经常用到一些加密解密的时候。下面介绍一个比较好用的加密解密函数,收藏下,以后会用得到。 <?php $id = 132; $token = ...

qzxun ⋅ 2014/07/10 ⋅ 3

go语言版本的discuz authcode函数实现

有个项目中正好需要用到一个对称加解密函数,想起了,DZ的那个authcode函数,于是乎在网上找了哈,没有发现,不晓得是不是我搜索技术不够哈,总之是没有找到,好吧,自己动手丰衣足食。。。G...

last911 ⋅ 2013/11/08 ⋅ 1

4.2. PHP crypt()

将字符串用DES编码加密。 语法:string crypt(string str,string [salt]); 返回值:字符串 函数种类:编码处理 内容说明 本函数将字符串用于UNIX的标准加密DES模块加密。这是单向的加密函...

玄学酱 ⋅ 2017/12/20 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

面试-JVM 内存结构

JVM 内存结构

秋日芒草 ⋅ 5分钟前 ⋅ 0

马氏距离与欧氏距离

马氏距离 马氏距离也可以定义为两个服从同一分布并且其协方差矩阵为Σ的随机变量之间的差异程度。 如果协方差矩阵为单位矩阵,那么马氏距离就简化为欧氏距离,如果协方差矩阵为对角阵,则其也...

漫步当下 ⋅ 28分钟前 ⋅ 0

聊聊spring cloud的RequestRateLimiterGatewayFilter

序 本文主要研究一下spring cloud的RequestRateLimiterGatewayFilter GatewayAutoConfiguration @Configuration@ConditionalOnProperty(name = "spring.cloud.gateway.enabled", matchIfMi......

go4it ⋅ 今天 ⋅ 0

Spring JavaConfig 注解

JavaConfig注解允许开发者将Bean的定义和配置放在Java类中。它是除使用XML文件定义和配置Bean外的另一种方案。 配置: 如一个Bean如果在XML文件可以这样配置: <bean id="helloBean" class="...

霍淇滨 ⋅ 今天 ⋅ 0

Spring clound 组件

Spring Cloud技术应用从场景上可以分为两大类:润物无声类和独挑大梁类。 润物无声,融合在每个微服务中、依赖其它组件并为其提供服务。 Ribbon,客户端负载均衡,特性有区域亲和、重试机制。...

英雄有梦没死就别停 ⋅ 今天 ⋅ 0

Confluence 6 重新获得站点备份文件

Confluence 将会创建备份,同时压缩 XML 文件后存储熬你的 <home-directory>/backups> 目录中。你需要自己访问你安装的 Confluence 服务器,并且从服务器上获得这个文件。 运行从 Confluence...

honeymose ⋅ 今天 ⋅ 0

informix的常用SQL语句

1、创建数据库 eg1. 创建不记录日志的库testdb,参考语句如下: CREATE DATABASE testdb; eg2. 创建带缓冲式的记录日志的数据库testdb(SQL语句不一定在事务之中,拥有者名字不被用于对象的解...

wangxuwei ⋅ 今天 ⋅ 0

matplotlib画图

最简单的入门是从类 MATLAB API 开始,它被设计成兼容 MATLAB 绘图函数。 from pylab import *from numpy import *x = linspace(0, 5, 10)y = x ** 2figure()plot(x, y, 'r')...

Dr_hu ⋅ 今天 ⋅ 0

RabbitMQ学习以及与Spring的集成(三)

本文介绍RabbitMQ与Spring的简单集成以及消息的发送和接收。 在RabbitMQ的Spring配置文件中,首先需要增加命名空间。 xmlns:rabbit="http://www.springframework.org/schema/rabbit" 其次是模...

onedotdot ⋅ 今天 ⋅ 0

JAVA实现仿微信红包分配规则

最近过年发红包拜年成为一种新的潮流,作为程序猿对算法的好奇远远要大于对红包的好奇,这里介绍一种自己想到的一种随机红包分配策略,还请大家多多指教。 算法介绍 一、红包金额限制 对于微...

小致dad ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部