WEB交互安全一直是个各大网站的首要解决方案,本文介绍的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
65
66
67
|
<?php
/**
* PHP加密类
* 琼台博客
*/
class Jiami{
// 公钥
protected $key = 'lee' ;
private function keyED( $txt , $encrypt_key ){
$encrypt_key = md5( $encrypt_key );
$ctr =0;
$tmp = '' ;
for ( $i =0; $i < strlen ( $txt ); $i ++){
if ( $ctr == strlen ( $encrypt_key )){
$ctr =0;
}
$tmp .= substr ( $txt , $i ,1) ^ substr ( $encrypt_key , $ctr ,1);
$ctr ++;
}
return $tmp ;
}
public function encrypt( $txt , $key = '' ){
if ( empty ( $key )){
$key = $this ->key;
}
srand((double)microtime()*1000000);
$encrypt_key = md5(rand(0,32000));
$ctr =0;
$tmp = '' ;
for ( $i =0; $i < strlen ( $txt ); $i ++) {
if ( $ctr == strlen ( $encrypt_key )){
$ctr =0;
}
$tmp .= substr ( $encrypt_key , $ctr ,1).( substr ( $txt , $i ,1) ^ substr ( $encrypt_key , $ctr ,1));
$ctr ++;
}
return $this ->keyED( $tmp , $key );
}
public function decrypt( $txt , $key = '' ){
if ( empty ( $key )){
$key = $this ->key;
}
$txt = $this ->keyED( $txt , $key );
$tmp = '' ;
for ( $i =0; $i < strlen ( $txt ); $i ++){
$md5 = substr ( $txt , $i ,1);
$i ++;
$tmp .= ( substr ( $txt , $i ,1) ^ $md5 );
}
return $tmp ;
}
public function setKey( $key ){
if ( empty ( $key )){
return null;
}
$this ->key= $key ;
}
public function getPK(){
return $this ->key;
}
}
|
使用方法:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
<?php
// 先包含加密类
require_once ( 'jiami.class.php' );
// 要加密的字符串
$string = 'http://www.zzvips.com' ;
// 实例化加密类
$jiami = new Jiami();
// 设置公钥
$jiami ->setKey( 'qttc' );
// 加密字符串
$enc = $jiami ->encrypt( $string , $jiami ->getPK());
// 解密字符串
$dec = $jiami ->decrypt( $enc , $jiami ->getPK());
echo '<meta charset="utf-8" />' ;
echo '加密前 : ' . $string . '<br/>' ;
echo '加密后 : ' . $enc . '<br/>' ;
echo '解密后 : ' . $dec ;
?>
|
页面执行结果
结果1:
结果2:
由以上结果可以看到,每次加密产生的加密字符串都不一样,这是随机的。
解密的时候,需要使用加密时的公钥,否则无法解密。如你这边加密公钥使用‘qttc',解密的时候,也需要使用这个'qttc'作为公钥去解密,否则无法解密。
相关文章
猜你喜欢
- 64M VPS建站:能否支持高流量网站运行? 2025-06-10
- 64M VPS建站:怎样选择合适的域名和SSL证书? 2025-06-10
- 64M VPS建站:怎样优化以提高网站加载速度? 2025-06-10
- 64M VPS建站:是否适合初学者操作和管理? 2025-06-10
- ASP.NET自助建站系统中的用户注册和登录功能定制方法 2025-06-10
TA的动态
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
您的支持,是我们最大的动力!
热门文章
-
2025-05-29 38
-
2025-05-29 88
-
2025-05-25 19
-
2025-05-27 84
-
2025-05-29 43
热门评论