本文实例讲述了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
|
//加密 function string2secret( $str ) { $key = "123" ; $td = mcrypt_module_open(MCRYPT_DES, '' , 'ecb' , '' ); $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size( $td ), MCRYPT_RAND); $ks = mcrypt_enc_get_key_size( $td ); $key = substr (md5( $key ), 0, $ks ); mcrypt_generic_init( $td , $key , $iv ); $secret = mcrypt_generic( $td , $str ); mcrypt_generic_deinit( $td ); mcrypt_module_close( $td ); return $secret ; } //解密 function secret2string( $sec ) { $key = "123" ; $td = mcrypt_module_open(MCRYPT_DES, '' , 'ecb' , '' ); $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size( $td ), MCRYPT_RAND); $ks = mcrypt_enc_get_key_size( $td ); $key = substr (md5( $key ), 0, $ks ); mcrypt_generic_init( $td , $key , $iv ); $string = mdecrypt_generic( $td , $sec ); mcrypt_generic_deinit( $td ); mcrypt_module_close( $td ); return trim( $string ); } echo secret2string(string2secret( "11111111111111111" )); //显示结果是11111111111111111 echo '<br>' .string2secret( "11111111111111111" ); //显示乱码 echo '<br>' ; //$string:要加密的字符串 $isEncrypt=true:加密 $isEncrypt=false:解密 function dencrypt( $string , $isEncrypt = true, $key = "KEY_SPACE" ) { if (!isset( $string {0}) || !isset( $key {0})) { return false; } $dynKey = $isEncrypt ? hash( 'sha1' , microtime(true)) : substr ( $string , 0, 40); $fixedKey = hash( 'sha1' , $key ); $dynKeyPart1 = substr ( $dynKey , 0, 20); $dynKeyPart2 = substr ( $dynKey , 20); $fixedKeyPart1 = substr ( $fixedKey , 0, 20); $fixedKeyPart2 = substr ( $fixedKey , 20); $key = hash( 'sha1' , $dynKeyPart1 . $fixedKeyPart1 . $dynKeyPart2 . $fixedKeyPart2 ); $string = $isEncrypt ? $fixedKeyPart1 . $string . $dynKeyPart2 : (isset( $string {339}) ? gzuncompress( base64_decode ( substr ( $string , 40))) : base64_decode ( substr ( $string , 40))); $n = 0; $result = '' ; $len = strlen ( $string ); for ( $n = 0; $n < $len ; $n ++) { $result .= chr (ord( $string { $n }) ^ ord( $key { $n % 40})); } return $isEncrypt ? $dynKey . str_replace ( '=' , '' , base64_encode ( $n > 299 ? gzcompress( $result ) : $result )) : substr ( $result , 20, -20); } echo strlen (dencrypt( "12345678912345" )); |
希望本文所述对大家PHP程序设计有所帮助。