PHP加密解密类实例分析

   这篇文章主要介绍了PHP加密解密类,实例分析了php实现加密与解密的原理与相关技巧,非常具有实用价值,需要的朋友可以参考下

  本文实例讲述了PHP加密解密类。分享给大家供大家参考。具体分析如下:

  这段代码支持 数组加密 , 密文有效期, 各种对称加密

  其中参数如下:

  * @use ption::en($string, $key);

  * @param String $string 需要加密的字串

  * @param String $skey 密钥

  * @param int $expiry 密文有效期, 加密时候有效, 单位 秒,0 为永久有效

  * @return String

  1. php代码如下:

  ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64

/*
* -工具库-加密解密码
*/
class ption
{
private static $original = array('=', '+', '/');
private static $later = array('O0O0O', 'o0O0o', 'oo00o');
function __construct()
{
}
private static function md5($skey = '')
{
$skey = $skey ? $skey : 'ui' ; //uicms::_config('security/authkey');
return md5(substr($skey, 0, 16));
}
/**
* @use ption::en($string, $key);
* @param String $string 需要加密的字串
* @param String $skey 密钥
* @param int $expiry 密文有效期, 加密时候有效, 单位 秒,0 为永久有效
* @return String
*/
static public function en($string = '', $skey = '', $expiry=0)
{
if( is_array( $string ) )
{
$string = json_encode($string); // uicms::json($string, true, 'en');
}
$string = str_pad($expiry ? $expiry + TIME : 0, 10, 0).$string;
$strArr = str_split(base64_encode($string));
$strCount = count($strArr);
$skey = static::md5($skey);
foreach (str_split($skey) as $key => $value)
{
$key < $strCount && $strArr[$key].=$value;
}
return str_replace(self::$original, self::$later, join('', $strArr));
}
/**
* @use ption::de($string, $key);
* @param String $string 需要解密的字串
* @param String $skey 密钥
* @return String
*/
static public function de($string = '', $skey = '')
{
$strArr = str_split(str_replace(self::$later,self::$original,$string),2);
$strCount = count($strArr);
$skey = static::md5($skey);
foreach (str_split($skey) as $key => $value)
{
$key < $strCount && $strArr[$key][1] === $value && $strArr[$key] = $strArr[$key][0];
}
$result = base64_decode(join('', $strArr));
if(substr($result, 0, 10) == 0 || substr($result, 0, 10) - TIME > 0)
{
return substr($result, 10);
}
else
{
return false;
}
}
}

  2. 用法如下:

  ?

1
2
3
4
5
6

$str['username'] = 'oschina';
$str['pw'] = '123456';
$str['huoxin'] = '!@#$%^&';
echo "string : " . $str . " <br />";
echo "encode : " . ($enstring = ption::en($str)) . '<br />';
echo "decode : " . ption::de($enstring);

  希望本文所述对大家的php程序设计有所帮助。

时间: 2024-09-30 19:03:04

PHP加密解密类实例分析的相关文章

PHP加密解密类实例分析_php技巧

本文实例讲述了PHP加密解密类.分享给大家供大家参考.具体分析如下: 这段代码支持 数组加密 , 密文有效期, 各种对称加密 其中参数如下: * @use ption::en($string, $key); * @param String $string 需要加密的字串 * @param String $skey 密钥 * @param int $expiry 密文有效期, 加密时候有效, 单位 秒,0 为永久有效 * @return String 1. php代码如下: /* * -工具库-加

PHP实现加强版加密解密类实例_php技巧

本文实例讲述了PHP实现加强版加密解密类.分享给大家供大家参考.具体如下: <?php class Ender{ private $enkey;//加密解密用的密钥 private $rep_char='#'; //替换加密后的base64字符串中的=,因为=在有些场合是禁止使用的, //这里可以用一个允许的字符作为替换. //构造参数是密钥 public function __construct($key=''){ if(!$key){ $this->enkey=$key; } } //设置

python中base64加密解密方法实例分析

  本文实例讲述了python中base64加密解密方法.分享给大家供大家参考.具体分析如下: 一.base64 Base64是一种基于64个可打印字符来表示二进制数据的表示方法.由于2的6次方等于64,所以每6个比特为一个单元,对应某个可打印字符.三个字节有24个比特,对应于4个Base64单元,即3个字节需要用4个可打印字符来表示.它可用来作为电子邮件的传输编码.在Base64中的可打印字符包括字母A-Z.a-z.数字0-9 ,这样共有62个字符,此外两个可打印符号在不同的系统中而不同.编码

基于php实现的php代码加密解密类完整实例_php技巧

本文实例讲述了基于php实现的php代码加密解密类.分享给大家供大家参考,具体如下: php 代码加密类,大家可以根据自己的需求进行修改,原类如下,该实例在ubuntu下测试没有问题. <?php class Encryption{ private $c='';//存储密文 private $s='',$q1,$q2,$q3,$q4,$q5,$q6;//存储生成的加密后的文件内容 //如果不设置一个值,isset会表示不存在: private $file='';//读取文件的路径 private

一个PHP针对数字的加密解密类_php实例

复制代码 代码如下: <?php/** * 加密解密类 * 该算法仅支持加密数字.比较适用于数据库中id字段的加密解密,以及根据数字显示url的加密. * @author 深秋的竹子 * @version alpha * @加密原则 标记长度 + 补位 + 数字替换 * @加密步骤: * 将a-z,A-Z,0-9 62个字符打乱,取前M(数字最大的位数)位作为 标记长度字符串,取第M+1 到第M+10位为数字替换字符串,剩余的为补位字符串 * 1.计算数字长度n,取乱码的第n位作为标记长度. *

一组PHP可逆加密解密算法实例代码

 这篇文章主要介绍了一组PHP可逆加密解密算法实例代码,有需要的朋友可以参考一下 对于大部分密码加密,我们可以采用md5.sha1等方法.可以有效防止数据泄露,但是这些方法仅适用于无需还原的数据加密.   对于需要还原的信息,则需要采用可逆的加密解密算法.   下面一组PHP函数是实现此加密解密的方法:   加密算法如下: 代码如下: function encrypt($data, $key) {  $key = md5($key);     $x  = 0;     $len = strlen

一个PHP针对数字的加密解密类

 这篇文章主要介绍了一个PHP针对数字的加密解密类,该类仅支持加密数字.比较适用于数据库中id字段的加密解密,以及根据数字显示url的加密,需要的朋友可以参考下 代码如下: <?php /**  * 加密解密类  * 该算法仅支持加密数字.比较适用于数据库中id字段的加密解密,以及根据数字显示url的加密.  * @author 深秋的竹子  * @version alpha  * @加密原则 标记长度 + 补位 + 数字替换  * @加密步骤:  * 将a-z,A-Z,0-9 62个字符打乱,

Java实现MD5加密解密类

首先说明一下系统自带的MD5加密:           public final static String MD5(String s) {       char hexDigits[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};              try {           byte[] btInput = s.getBytes();           // 获得MD5摘要算法的 Messa

[C#] 常用工具类——加密解密类

using System; using System.Configuration; using System.Collections.Generic; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using S