Rumah > pembangunan bahagian belakang > tutorial php > PHP实现的DES加密解密封装类完整的方法

PHP实现的DES加密解密封装类完整的方法

墨辰丷
Lepaskan: 2023-03-27 16:10:01
asal
2109 orang telah melayarinya

这篇文章主要介绍了PHP实现的DES加密解密封装类,结合完整实例形式分析了php DES加密解密封装类的定义与使用技巧,需要的朋友可以参考下

本文实例讲述了PHP实现的DES加密解密封装类。分享给大家供大家参考,具体如下:

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

<?php

/**

* PHP版DES加解密类

* 可与java的DES(DESede/CBC/PKCS5Padding)加密方式兼容

*

*/

class CryptDes {

   var $key;

   var $iv;

   function CryptDes($key, $iv){

    $this->key = $key;

    $this->iv = $iv;

   }

   function encrypt($input){

     $size = mcrypt_get_block_size(MCRYPT_DES,MCRYPT_MODE_CBC); //3DES加密将MCRYPT_DES改为MCRYPT_3DES

     $input = $this->pkcs5_pad($input, $size); //如果采用PaddingPKCS7,请更换成PaddingPKCS7方法。

     $key = str_pad($this->key,8,&#39;0&#39;); //3DES加密将8改为24

     $td = mcrypt_module_open(MCRYPT_DES, &#39;&#39;, MCRYPT_MODE_CBC, &#39;&#39;);

     if( $this->iv == &#39;&#39; )

     {

       $iv = @mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);

     }

     else

     {

       $iv = $this->iv;

     }

     @mcrypt_generic_init($td, $key, $iv);

     $data = mcrypt_generic($td, $input);

     mcrypt_generic_deinit($td);

     mcrypt_module_close($td);

     $data = base64_encode($data);//如需转换二进制可改成 bin2hex 转换

     return $data;

   }

   function decrypt($encrypted){

     $encrypted = base64_decode($encrypted); //如需转换二进制可改成 bin2hex 转换

     $key = str_pad($this->key,8,&#39;0&#39;); //3DES加密将8改为24

     $td = mcrypt_module_open(MCRYPT_DES,&#39;&#39;,MCRYPT_MODE_CBC,&#39;&#39;);//3DES加密将MCRYPT_DES改为MCRYPT_3DES

     if( $this->iv == &#39;&#39; )

     {

       $iv = @mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);

     }

     else

     {

       $iv = $this->iv;

     }

     $ks = mcrypt_enc_get_key_size($td);

     @mcrypt_generic_init($td, $key, $iv);

     $decrypted = mdecrypt_generic($td, $encrypted);

     mcrypt_generic_deinit($td);

     mcrypt_module_close($td);

     $y=$this->pkcs5_unpad($decrypted);

     return $y;

   }

   function pkcs5_pad ($text, $blocksize) {

     $pad = $blocksize - (strlen($text) % $blocksize);

     return $text . str_repeat(chr($pad), $pad);

   }

   function pkcs5_unpad($text){

     $pad = ord($text{strlen($text)-1});

     if ($pad > strlen($text)) {

       return false;

     }

     if (strspn($text, chr($pad), strlen($text) - $pad) != $pad){

       return false;

     }

     return substr($text, 0, -1 * $pad);

   }

   function PaddingPKCS7($data) {

     $block_size = mcrypt_get_block_size(MCRYPT_DES, MCRYPT_MODE_CBC);//3DES加密将MCRYPT_DES改为MCRYPT_3DES

     $padding_char = $block_size - (strlen($data) % $block_size);

     $data .= str_repeat(chr($padding_char),$padding_char);

     return $data;

   }

}

$des = new CryptDes("12345678","12345678");//(秘钥向量,混淆向量)

echo $ret = $des->encrypt("1111");//加密字符串

?>

Salin selepas log masuk

以上就是本文的全部内容,希望对大家的学习有所帮助。


相关推荐:

13个PHP函数超实用_javascript技巧

一个php+js实时显示时间问题_javascript技巧

jQuery+PHP+MySQL二级联动下拉菜单实例讲解_jquery

Atas ialah kandungan terperinci PHP实现的DES加密解密封装类完整的方法. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan