您好,欢迎访问一九零五行业门户网

PHP实现AES256加密算法实例_PHP教程

php实现aes256加密算法实例 本文实例讲述了php实现aes256加密算法的方法,是较为常见的一种加密算法。分享给大家供大家参考。具体如下:
aes.class.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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
6 && $i%$nk == 4) { 
    $temp = self::subword($temp); 
   } 
   for ($t=0; $t
  } 
  return $w; 
 }
private static function subword($w) {  // apply sbox to 4-byte word w 
  for ($i=0; $i
  return $w; 
 }
private static function rotword($w) {  // rotate 4-byte word w left by one byte 
  $tmp = $w[0]; 
  for ($i=0; $i
  $w[3] = $tmp; 
  return $w; 
 }
// sbox is pre-computed multiplicative inverse in gf(2^8) used in subbytes and keyexpansion [§5.1.1] 
 private static $sbox = array( 
  0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5,0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76, 
  0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0,0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0, 
  0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc,0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15, 
  0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a,0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75, 
  0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0,0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84, 
  0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b,0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf, 
  0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85,0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8, 
  0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5,0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2, 
  0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17,0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73, 
  0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88,0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb, 
  0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c,0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79, 
  0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9,0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08, 
  0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6,0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a, 
  0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e,0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e, 
  0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94,0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf, 
  0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68,0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16);
// rcon is round constant used for the key expansion [1st col is 2^(r-1) in gf(2^8)] [§5.2] 
 private static $rcon = array(  
  array(0x00, 0x00, 0x00, 0x00), 
  array(0x01, 0x00, 0x00, 0x00), 
  array(0x02, 0x00, 0x00, 0x00), 
  array(0x04, 0x00, 0x00, 0x00), 
  array(0x08, 0x00, 0x00, 0x00), 
  array(0x10, 0x00, 0x00, 0x00), 
  array(0x20, 0x00, 0x00, 0x00), 
  array(0x40, 0x00, 0x00, 0x00), 
  array(0x80, 0x00, 0x00, 0x00), 
  array(0x1b, 0x00, 0x00, 0x00), 
  array(0x36, 0x00, 0x00, 0x00) );  
}  
?>
aesctr.class.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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
>> operator nor unsigned ints 
  * 
  * @param a number to be shifted (32-bit integer) 
  * @param b number of bits to shift a to the right (0..31) 
  * @return  a right-shifted and zero-filled by b bits 
  */ 
 private static function urs($a, $b) { 
  $a &= 0xffffffff; $b &= 0x1f; // (bounds check) 
  if ($a&0x80000000 && $b>0) {  // if left-most bit set 
   $a = ($a>>1) & 0x7fffffff;  //  right-shift one bit & clear left-most bit 
   $a = $a >> ($b-1);      //  remaining right-shifts 
  } else {            // otherwise 
   $a = ($a>>$b);        //  use normal right-shift 
  }  
  return $a;  
 } 
}  
?>
demo实例程序如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
这里再介绍另一使用 php mcrypt 加解密方法:
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
/* aes 256 encrypt 
* @param string $ostr 
* @param string $securekey 
* @param string $type encrypt, decrypt 
*/ 
function aes($ostr, $securekey, $type='encrypt'){ 
  if($ostr==''){ 
    return ''; 
  }
$key = $securekey; 
  $iv = strrev($securekey); 
  $td = mcrypt_module_open('rijndael-256', '', 'ofb', ''); 
  mcrypt_generic_init($td, $key, $iv);
$str = '';
switch($type){ 
    case 'encrypt': 
      $str = base64_encode(mcrypt_generic($td, $ostr)); 
      break;
case 'decrypt': 
      $str = mdecrypt_generic($td, base64_decode($ostr)); 
      break; 
  }
mcrypt_generic_deinit($td);
return $str; 
}
// demo 
$key = fdipzone201314showmethemoney!@#$; 
$str = show me the money;
$ostr = aes($str, $key); 
echo string 1: $ostr
;
$dstr = aes($ostr, $key, 'decrypt'); 
echo string 2: $dstr
;
http://www.bkjia.com/phpjc/882700.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/882700.htmltecharticlephp实现aes256加密算法实例 本文实例讲述了php实现aes256加密算法的方法,是较为常见的一种加密算法。分享给大家供大家参考。具体如下:...
其它类似信息

推荐信息