对于大部分密码加密,我们可以采用md5、sha1等方法。可以有效防止数据泄露,但是这些方法仅适用于无需还原的数据加密。

对于需要还原的信息,则需要采用可逆的加密解密算法。

下面一组PHP函数是实现此加密解密的方法:

加密算法如下:

function encrypt($data, $key)
{$key   =  md5($key);$x        =  0;$len  =  strlen($data);$l        =  strlen($key);for ($i = 0; $i < $len; $i++){if ($x == $l) {$x = 0;}$char .= $key{$x};$x++;}for ($i = 0; $i < $len; $i++){$str .= chr(ord($data{$i}) + (ord($char{$i})) % 256);}return base64_encode($str);
}

解密算法如下:

function decrypt($data, $key)
{$key = md5($key);$x = 0;$data = base64_decode($data);$len = strlen($data);$l = strlen($key);for ($i = 0; $i < $len; $i++){if ($x == $l) {$x = 0;}$char .= substr($key, $x, 1);$x++;}for ($i = 0; $i < $len; $i++){if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1))){$str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1)));}else{$str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1)));}}return $str;
}

上述加密解密的过程均需要用到一个加密密钥(即参数$key)。

$data = 'PHP加密解密算法';      // 被加密信息
$key = '123';                    // 密钥
$encrypt = encrypt($data, $key);
$decrypt = decrypt($encrypt, $key);
echo $encrypt, "\n", $decrypt;

上述将输出类似如下结果:

gniCSOzZG+HnS9zcFea7SefNGhXF

PHP加密解密算法

从上述结果可以看出,这是一组可逆的加密解密算法,可以用于部分需要还原的数据加密。

原文:http://www.phper.org.cn/index.php?m=content&a=show&post_id=387

一组PHP可逆加密解密算法相关推荐

  1. php中文加密解密算法,一组PHP可逆加密解密算法

    对于大部分密码加密,我们可以采用md5.sha1等方法.可以有效防止数据泄露,但是这些方法仅适用于无需还原的数据加密. 对于需要还原的信息,则需要采用可逆的加密解密算法. 下面一组PHP函数是实现此加 ...

  2. 简易可逆加密解密算法

    分享一个简单的可逆加密解密算法 1.基本原理 (1)使用base64_encode和base64_decode函数作为可逆的加密和解密工作函数 (2)把base64_encode出来的字符串通过某种方 ...

  3. md5加密以及可逆的加密解密算法

    md5加密 package gov.mof.fasp2.gcfr.adjustoffset.adjust; import java.security.MessageDigest; public cla ...

  4. AES加密解密算法Java实现

    AES加密算法是密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DE ...

  5. 简单的加密/解密算法_/c++

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_36557960/article/details/79299093 关于加密和解密问题,有的加密 ...

  6. RSA、MD5加密解密算法全套解析安装教程

    第一部分介绍加密解密算法, 第二部分介绍我小组成功应用的RSA.MD5两种加密解密算法,以及心得体会. 1.加密解密算法介绍 应用的开发中安全很重要,所以信息加密技术显得尤为重要.我们需要对应用中的多 ...

  7. 提供一个基于.NET的加密/解密算法

    提供一个基于.NET SymmetricAlgorithm 类的.带私钥的加密/解密算法的包装类.使用方法: symmcrypto de = new SymmCrypto(SymmCrypto.Sym ...

  8. C#的加密解密算法,包括Silverlight的MD5算法

    C#的加密解密算法,包括Silverlight的MD5算法 下面是一段加密解密工具类,其中的WinFormMD5Encrypt方法可以使得Winform和WebForm下的MD5加密结果一致,默认他们 ...

  9. php xxtea加密,PHP实现的XXTEA加密解密算法示例

    本文实例讲述了PHP实现的XXTEA加密解密算法.分享给大家供大家参考,具体如下: /** * Xxtea 加密实现类 */ class xxtea { private function long2s ...

最新文章

  1. CLH锁 、MCS锁
  2. CVPR2017有哪些值得读的Image Caption论文?
  3. 对Hibernate赖加载对象在session容器之外的获取方法
  4. mysql递归查询之后的排序问题_MySQL递归排序查询+树节点生成
  5. 限制文本框中只能输入数字(+,-)的正则表达式写法
  6. 操作系统|操作系统概述
  7. Sip 响应状态码 对照 详解
  8. python---数据清洗
  9. 得到常用汉字的拼音首字母
  10. 小米格式化fastboot_小米fastboot刷机教程
  11. Opencontrail 流的处理
  12. 怎么做好淘宝客推广?
  13. 第85节:Java中的JavaScript
  14. css3 gird布局
  15. Leetcode 884. 两句话中的不常见单词
  16. 增长模型拆解:分享有礼裂变玩法的底层逻辑与细节设计
  17. PCB设计走线细节讲解(图文结合|强力推荐)
  18. js高阶函数的使用-filter/map/reduct
  19. Html5-------合并单元格
  20. 2019.10.8 心情日记

热门文章

  1. 训练日志 2018.12.9
  2. Cantor表(洛谷-P1014)
  3. 11 所允许的仓储单位类型没有针对仓储类型xxx定义
  4. Oracle SQL中的!=与
  5. 代码注释(图案:键盘)
  6. H5调用手机摄像头拍照,如何压缩后上传
  7. java共享租车信息管理系统jsp源码
  8. 动漫App下载单页界面HTML源码带弹幕
  9. python操作excel命令_python操作Excel读写(使用xlrd和xlrt)[转帖]
  10. PHP付费资源下载交易平台网站源码