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
78
79
80
81
82
83 |
<?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, ‘0‘ ); //3DES加密将8改为24 $td
= mcrypt_module_open(MCRYPT_DES, ‘‘ , MCRYPT_MODE_CBC, ‘‘ ); if ( $this ->iv == ‘‘
) { $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, ‘0‘ ); //3DES加密将8改为24 $td
= mcrypt_module_open(MCRYPT_DES, ‘‘ ,MCRYPT_MODE_CBC, ‘‘ ); //3DES加密将MCRYPT_DES改为MCRYPT_3DES if ( $this ->iv == ‘‘
) { $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" ); //加密字符串 ?> |
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。