当前位置:首页 > 日记 > 正文

对PHP加密解密功能验证码使用详细的分析

对PHP加密解密功能验证码使用详细的分析
核心提示:康胜的验证码的功能可以说让中国的PHP的一大贡献。它包括康胜自己的产品,而中国大多数企业使用PHP这个函数加密。验证码的使用异或运算加密和解密。

康胜的验证码的功能可以说让在中国PHP社区的一大贡献。它包括康胜自己的产品,而中国大多数企业使用PHP这个函数加密。验证码的使用异或运算加密和解密。

其原理如下:

加密

明文:10101001

密钥:11100011

密文:01001010

为了得到密码01001010,解密的需要和秘密的秘密密钥将是可能的。

解密

密文:01001010

密钥:11100011

明文:10101001

没有高深度的算法,而密钥是非常重要的,所以关键是如何生成密钥。

所以让我们看看如何验证码可以一起做
复制代码代码如下所示:
参数解释
字符串:明文或密文
操作:解码说其他的解密,加密
密钥: $键
过期:有效密文
功能验证码($字符串操作= 'decode美元,美元关键=,= 0美元到期){
动态密钥长度,同一明文会产生不同的密文,是依靠动态密钥。
ckey_length = 4美元;


美元关键= MD5(美元美元美元关键关键:{ 'discuz_auth_key全局'});

密钥将参与加密和解密。
$科亚= MD5(substr($,0, 16));
该键将用于进行数据完整性验证。
$键盘= MD5(substr($,16, 16));
C/密文生成变化的关键
keyc = $($美元ckey_length操作= = 'decode'substr($字符串,0,ckey_length美元):
substr(MD5(瞬时()),至ckey_length)):;
参与键的操作
cryptkey = $(美元keya.md5科亚keyc美元美元。);
key_length美元= strlen($ cryptkey);
/ /明文,10节省时间戳之前,验证数据加密的有效性,10到26位来存储键盘美元(关键B),解密这个关键的数据完整性验证
如果是 / /解码,将开始从ckey_length美元,因为之前ckey_length美元拯救动态密钥的密文,确保正确的解密
$字符串操作= = 'decode'base64_decode美元(substr($字符串,ckey_length美元)):
sprintf(% 010d美元美元,到期届满+时间()():0)。Substr(MD5($字符串。$键盘),0, 16)。为字符串;
string_length美元= strlen($字符串);
结果=;
框=范围(0, 255);
rndkey美元=阵();
拥有/密钥簿
($ i = 0;$ i < 255;$ + +){
{ } =我rndkey美元美元ORD($ cryptkey { $ % $我key_length });
}
用固定的算法,破坏密钥本,增加随机性,看起来很复杂,实际上增加了密文的强度不是。
对于($ = $ I = 0;$ i < 256;$ + +){
J =(J + $盒{ $我} + $ rndkey { $我})% 256;
$ = $;
$;
$;
}
加密和解密的核心部分。
为($ = $ J = $我= 0;美元美元美元我<< string_length;i++){
$ =($ + 1)% 256;
$ =($ J $ +盒{ })% 256;
$ $ =;
$;
$;
从这本书中的关键字键或把它变成一个字符。
由于美元= CHR(ORD($字符串{我})^(合箱{(合箱{一} +美元美元箱{ $ J })% 256 }));
}
如果(= = 'decode操作美元){
/ / substr($,0, 10)数据有效性验证= = 0
/ / substr($,0, 10)时间(0)>有效性验证数据
/ / substr($,10, 16)= substr(MD5(substr($,26)美元的键盘),0, 16)来验证数据的完整性
验证数据 / /有效性,请参阅未加密的明文格式
如果((substr($,0, 10)= = 0 | | substr($,0, 10)-(时间)> 0)
substr($,10, 16)= substr(MD5(substr($,26)美元的键盘),0, 16)){
返回substr($,26);
{人}
返回' ';
}
{人}
密钥存储在动态密文中,这就是同一明文、密文解密可以产生不同的原因。
/ /因为加密的密文,可能是一些特殊的字符,复制过程可能会丢失,所以使用Base64编码
返回的keyc.str_replace(' = ',' ',base64_encode($结果));
}
}

相关文章

SkyDrive上传文件的速度和多线程的

SkyDrive上传文件的速度和多线程的

方法,上传文件,多线程,速度,技术,许多用户抱怨,Win8系统SkyDrive上传速度慢,这是因为SkyDrive默认是单线程的,它可以转化为多个线程,文件上传速度快。 修改SkyDrive的多线程方法:按Win + r组合键,调出运行框,键入localappdata;% % 微软网盘设置 gl…

mmusbkb2.exe的功能是什么该mmusbk

mmusbkb2.exe的功能是什么该mmusbk

查询,功能,过程,电脑软件,exe,点评:mmusbkb2.exe是一个多媒体键盘扩展键支持程序 进程文件:mmusbkb2或mmusbkb2.exe 进程名称:mmusbkb2 过程类别:安全风险的过程 英文描述: mmusbkb2.exe是一个过程,可以在一触式多媒体键盘范围附加键配置。这是…

PHP第二节数据类型数组

PHP第二节数据类型数组

数组,数据类型,第二节,电脑软件,PHP,PHP中的数组实际上是一个有序的映射,映射是一种连接价值的钥匙。这种类型在很多方面得到了优化,所以它可以被看作是一个真正的数组或列表(矢量),哈希表(映射实现),字典,集合,栈,队列和更多的可能性。数组元素的值也…

对remind32.exe-使用remind32是什

对remind32.exe-使用remind32是什

电脑软件,exe,点评:remind32.exe是ScanSoft产品注册提醒程序 进程文件:remind32或remind32.exe 进程名称:ScanSoft产品注册 过程类别:安全风险的过程 英文描述: remind32.exe是一个应用程序,提醒你登记你的ScanSoft,登记,它也被称为以下三个方面…

mysql加密/压缩功能

mysql加密/压缩功能

加密,压缩,功能,电脑软件,mysql,这些问题可能会导致数据值的变化。一般来说,当你使用非二进制字符串数据类型可能会出现上述问题,如char、varchar、文本、数据和其他数据类型。 aes_encrypt()和()aes_decrypt aes_encrypt()和()aes_decrypt可以加密…

是de_serv.exe安全过程可以de_serv

是de_serv.exe安全过程可以de_serv

过程,结束,电脑软件,de_serv,exe,点评:de_serv.exe是AVM的DSL调制解调器驱动程序相关的过程 进程文件:de_serv或de_serv.exe 过程名称:动静脉畸形弗里茨!Web服务路由 过程类别:安全风险的过程 英文描述: de_serv.exe安装和AVM fritzs系列,fritzs…

访问Linux默认访问控制权限的具体

访问Linux默认访问控制权限的具体

权限,默认,访问控制,具体步骤,电脑软件,注释:帮助您了解Linux文件格式和设置权限是本文的目的。下面,我将与大家分享具体的操作步骤。有兴趣的朋友可以参考哈。 实验的目的:了解Linux文件的权限设置。 实验步骤: 1。以root身份登录Linux 2…

基于日志分析的方法探讨

基于日志分析的方法探讨

方法,日志分析,电脑软件,LogMiner是每个DBA应该熟悉的工具,当天由于用户的错误,你需要不完全恢复,因为你不能确定时间完成此操作,所以它会带给你巨大的困难恢复丢失的数据不能完全恢复。LogMiner可以帮助你决定误操作的确切时间。 我的测试环境…

如何关闭Vista系统的ClearType功能

如何关闭Vista系统的ClearType功能

系统,功能,电脑软件,Vista,ClearType,点评:ClearType功能可以点击鼠标的右键点击桌面,选择个性化,打开个性化窗口,输入窗口颜色和外观/打开传统风格的外观属性,获得更多的颜色选项 /效果,取消在这里。 Windows ClearType功能可以在屏幕上显示更…

游戏不能打开很高的屏幕不能打开高

游戏不能打开很高的屏幕不能打开高

解决方案,屏幕,很高,高质量,游戏,问题: 我的电脑配置是i7处理器,7970芯片卡,玩孤岛危机3游戏可以打开一个质量比较高,但玩狙击手:幽灵战士;2游戏,高质量是无法打开的非常高的水平,这是怎么了 答案uff1a 游戏质量默认选项是Low(低),中(),高(高),自定义(自定…

手动优化Win7清理和关闭多余的Win7

手动优化Win7清理和关闭多余的Win7

服务,优化,多余,电脑软件,点评:低配置计算机如何才能顺利地赢7本文教您手动优化Win 7,对象是最容易被忽略的系统服务,感兴趣的朋友可以参考它。 现在有很多配置不高的电脑用户正式使用Windows7(以下简称Win 7),如何让低配置的电脑跑赢可以更流利…

Oracle创建表空间细节

Oracle创建表空间细节

创建表空间,细节,电脑软件,Oracle,注: 1。如果您在PL/sql和其他工具中打开,请修改下列代码{斜体增厚段}执行以下代码 2。确保路径存在,例如,{ D: Oracle oradata Oracle9i }是你要保存文件的路径。 分为四个步骤:* *第一步:创建一个临时表空间。 复…