本文实例讲述了PHP的AES加密算法。分享给大家供大家参考,具体如下:
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
|
<?php class MCrypt { private $hex_iv = '00000000000000000000000000000000' ; # converted JAVA byte code in to HEX and placed it here private $key = 'U1MjU1M0FDOUZ.Qz' ; #Same as in JAVA function __construct() { $this ->key = hash( 'sha256' , $this ->key, true); //echo $this->key.'<br/>'; } function encrypt( $str ) { $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '' , MCRYPT_MODE_CBC, '' ); mcrypt_generic_init( $td , $this ->key, $this ->hexToStr( $this ->hex_iv)); $block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); $pad = $block - ( strlen ( $str ) % $block ); $str .= str_repeat ( chr ( $pad ), $pad ); $encrypted = mcrypt_generic( $td , $str ); mcrypt_generic_deinit( $td ); mcrypt_module_close( $td ); return base64_encode ( $encrypted ); } function decrypt( $code ) { $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '' , MCRYPT_MODE_CBC, '' ); mcrypt_generic_init( $td , $this ->key, $this ->hexToStr( $this ->hex_iv)); $str = mdecrypt_generic( $td , base64_decode ( $code )); $block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); mcrypt_generic_deinit( $td ); mcrypt_module_close( $td ); return $this ->strippadding( $str ); } /* For PKCS7 padding */ private function addpadding( $string , $blocksize = 16) { $len = strlen ( $string ); $pad = $blocksize - ( $len % $blocksize ); $string .= str_repeat ( chr ( $pad ), $pad ); return $string ; } private function strippadding( $string ) { $slast = ord( substr ( $string , -1)); $slastc = chr ( $slast ); $pcheck = substr ( $string , - $slast ); if (preg_match( "/$slastc{" . $slast . "}/" , $string )) { $string = substr ( $string , 0, strlen ( $string ) - $slast ); return $string ; } else { return false; } } function hexToStr( $hex ) { $string = '' ; for ( $i =0; $i < strlen ( $hex )-1; $i +=2) { $string .= chr (hexdec( $hex [ $i ]. $hex [ $i +1])); } return $string ; } } $encryption = new MCrypt(); echo $encryption ->encrypt( '123456' ) . "<br/>" ; echo $encryption ->decrypt( 'tpyxISJ83dqEs3uw8bN/+w==' ); ?> |
希望本文所述对大家PHP程序设计有所帮助。