外链论坛

 找回密码
 立即注册
搜索
查看: 68|回复: 6

一个经典的PHP加密解密算法

[复制链接]

3003

主题

119

回帖

9915万

积分

论坛元老

Rank: 8Rank: 8

积分
99159222
发表于 2024-7-11 02:03:23 | 显示全部楼层 |阅读模式

项目中有时咱们必须运用PHP将特定的信息进行加密,便是经过加密算法生成一个加密字符串,这个加密后的字符串能够经过解密算法进行解密,便于程序对解密后的信息进行处理。

平常的应用在用户登录以及有些API数据交换的场景。

平常的应用在用户登录以及有些API数据交换的场景。

笔者收录了有些比较经典的PHP加密解密函数代码,分享给大众。加密解密原理通常都是经过必定的加密解密算法,将密钥加入到算法中,最后得到加密解密结果。

1、非常给力的authcode加密函数,Discuz!经典代码(带详解):

function authcode($string, $operation = DECODE, $key = , $expiry = 0)

{

// 动态密匙长度,相同的明文会生成区别密文便是依靠动态密匙

$ckey_length = 4;

// 密匙

$key = md5($key ? $key : $GLOBALS[discuz_auth_key]);

// 密匙a会参与加解密

$keya = md5(substr($key, 0, 16));

// 密匙b会用来做数据完整性验证

$keyb = md5(substr($key, 16, 16));

// 密匙c用于变化生成的密文

$keyc = $ckey_length ? ($operation == DECODE ? substr($string, 0, $ckey_length) :

substr(md5(microtime()), -$ckey_length)) : ;

// 参与运算的密匙

$cryptkey = $keya . md5($keya . $keyc);

$key_length = strlen($cryptkey);

// 明文,前10位用来保留时间戳,解密时验证数据有效性,10到26位用来保留$keyb(密匙b),

//解密时会经过这个密匙验证数据完整性

// 倘若是解码的话,会从第$ckey_length位起始由于密文前$ckey_length位保留 动态密匙,以保准解密正确

$string = $operation == DECODE ? base64_decode(substr($string, $ckey_length)) : sprintf(%010d, $expiry ? $expiry + time() : 0) . substr(md5($string . $keyb), 0, 16) . $string;

$string_length = strlen($string);

$result = ;

$box = range(0, 255);

$rndkey = array();

// 产生密匙簿

for ($i = 0; $i <= 255; $i++) {

$rndkey[$i] = ord($cryptkey[$i % $key_length]);

}

// 用固定的算法,打乱密匙簿,增多随机性,好似繁杂实质上对并不会增多密文的强度

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 = ($
回复

使用道具 举报

0

主题

1万

回帖

1

积分

新手上路

Rank: 1

积分
1
发表于 2024-8-29 18:17:20 | 显示全部楼层
外链论坛的成功举办,是与各位领导、同仁们的关怀和支持分不开的。在此,我谨代表公司向关心和支持论坛的各界人士表示最衷心的感谢!
回复

使用道具 举报

3011

主题

2万

回帖

9915万

积分

论坛元老

Rank: 8Rank: 8

积分
99159151
发表于 2024-9-10 07:20:13 | 显示全部楼层
一看到楼主的气势,我就觉得楼主同在社区里灌水。
回复

使用道具 举报

3094

主题

2万

回帖

9996万

积分

论坛元老

Rank: 8Rank: 8

积分
99968785
发表于 2024-9-28 10:06:49 | 显示全部楼层
你字句如珍珠,我珍藏这份情。
回复

使用道具 举报

2988

主题

2万

回帖

9910万

积分

论坛元老

Rank: 8Rank: 8

积分
99109267
发表于 2024-10-7 04:43:41 | 显示全部楼层
认真阅读了楼主的帖子,非常有益。
回复

使用道具 举报

3074

主题

2万

回帖

9910万

积分

论坛元老

Rank: 8Rank: 8

积分
99108805
发表于 2024-10-9 11:14:55 | 显示全部楼层
“板凳”(第三个回帖的人)‌
回复

使用道具 举报

3016

主题

2万

回帖

9913万

积分

论坛元老

Rank: 8Rank: 8

积分
99139149
发表于 2024-10-10 07:48:17 | 显示全部楼层
谷歌外链发布 http://www.fok120.com/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|外链论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-9 02:41 , Processed in 0.081481 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.