PHP的AES加密算法完整实例

2025-05-29 0 101

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

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 PHP的AES加密算法完整实例 https://www.kuaiidc.com/97859.html

相关文章

发表评论
暂无评论