本文实例讲述了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程序设计有所帮助。