分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

PHP数据加密和解密

发布时间:2023-09-06 02:28责任编辑:苏小强关键词:PHP


encrypt.php

<?php ???????????????/** ???????* Passport 加密函数 ???????* ???????* @param ???????????????string ?????????等待加密的原字串 ???????* @param ???????????????string ?????????私有密匙(用于解密和加密) ???????* ???????* @return ??????????????string ?????????原字串经过私有密匙加密后的结果 ???????*/ ???????function passport_encrypt($txt, $key){ ???????????????// 使用随机数发生器产生 0~64000 的值并 MD5() ???????????????$encrypt_key = md5(rand(0, 64000)); ???????????????// 变量初始化 ???????????????$ctr = 0; ???????????????$tmp = ‘‘; ???????????????// for 循环,$i 为从 0 开始,到小于 $txt 字串长度的整数 ???????????????for($i = 0; $i < strlen($txt); $i++) { ???????????????????????// 如果 $ctr = $encrypt_key 的长度,则 $ctr 清零 ???????????????????????$ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr; ???????????????????????// $tmp 字串在末尾增加两位,其第一位内容为 $encrypt_key 的第 $ctr 位, ???????????????????????// 第二位内容为 $txt 的第 $i 位与 $encrypt_key 的 $ctr 位取异或。然后 $ctr = $ctr + 1 ???????????????????????$tmp .= $encrypt_key[$ctr].($txt[$i] ^ $encrypt_key[$ctr++]); ???????????????} ???????????????// 返回结果,结果为 passport_key() 函数返回值的 base64 编码结果 ???????????????return base64_encode(passport_key($tmp, $key)); ???????} ???????/** ???????* Passport 解密函数 ???????* ???????* @param ???????????????string ?????????加密后的字串 ???????* @param ???????????????string ?????????私有密匙(用于解密和加密) ???????* ???????* @return ??????????????string ?????????字串经过私有密匙解密后的结果 ???????*/ ???????function passport_decrypt($txt, $key) { ???????????????// $txt 的结果为加密后的字串经过 base64 解码,然后与私有密匙一起, ???????????????// 经过 passport_key() 函数处理后的返回值 ???????????????$txt = passport_key(base64_decode($txt), $key); ???????????????// 变量初始化 ???????????????$tmp = ‘‘; ???????????????// for 循环,$i 为从 0 开始,到小于 $txt 字串长度的整数 ???????????????for ($i = 0; $i < strlen($txt); $i++) { ???????????????????????// $tmp 字串在末尾增加一位,其内容为 $txt 的第 $i 位, ???????????????????????// 与 $txt 的第 $i + 1 位取异或。然后 $i = $i + 1 ???????????????????????$tmp .= $txt[$i] ^ $txt[++$i]; ???????????????} ???????????????// 返回 $tmp 的值作为结果 ???????????????return $tmp; ???????} ???????/** ???????* Passport 密匙处理函数 ???????* ???????* @param ???????????????string ?????????待加密或待解密的字串 ???????* @param ???????????????string ?????????私有密匙(用于解密和加密) ???????* ???????* @return ??????????????string ?????????处理后的密匙 ???????*/ ???????function passport_key($txt, $encrypt_key) { ???????????????// 将 $encrypt_key 赋为 $encrypt_key 经 md5() 后的值 ???????????????$encrypt_key = md5($encrypt_key); ???????????????// 变量初始化 ???????????????$ctr = 0; ???????????????$tmp = ‘‘; ???????????????// for 循环,$i 为从 0 开始,到小于 $txt 字串长度的整数 ???????????????for($i = 0; $i < strlen($txt); $i++) { ???????????????????????// 如果 $ctr = $encrypt_key 的长度,则 $ctr 清零 ???????????????????????$ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr; ???????????????????????// $tmp 字串在末尾增加一位,其内容为 $txt 的第 $i 位, ???????????????????????// 与 $encrypt_key 的第 $ctr + 1 位取异或。然后 $ctr = $ctr + 1 ???????????????????????$tmp .= $txt[$i] ^ $encrypt_key[$ctr++]; ???????????????} ???????????????// 返回 $tmp 的值作为结果 ???????????????????????????????return $tmp; ???????} ???????/** ????????* 测试 ????????*/ ???????$ystr = ‘i love you‘; ???????$k = ‘hawk‘; ???????$enstr = passport_encrypt($ystr,$k); ???????echo passport_decrypt($enstr,$k);

PHP数据加密和解密

原文地址:https://www.cnblogs.com/lovellll/p/10200541.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved