-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdesc3加密
58 lines (51 loc) · 2.05 KB
/
desc3加密
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
<?php
class Crypt3Des {
public $key = "f69fc0e2575511a7f69fc0e2"; // 这个根据实际情况写
function encrypt($input) { // 数据加密
$size = mcrypt_get_block_size ( MCRYPT_3DES, 'ecb' );
$input = $this->pkcs5_pad ( $input, $size );
$key = str_pad ( $this->key, 24, '0' );
$td = mcrypt_module_open ( MCRYPT_3DES, '', 'ecb', '' );
$iv = @mcrypt_create_iv ( mcrypt_enc_get_iv_size ( $td ), MCRYPT_RAND );
@mcrypt_generic_init ( $td, $key, $iv );
$data = mcrypt_generic ( $td, $input );
mcrypt_generic_deinit ( $td );
mcrypt_module_close ( $td );
$data = base64_encode ( $data );
return $data;
}
function decrypt($encrypted) { // 数据解密
$encrypted = base64_decode ( $encrypted );
$key = str_pad ( $this->key, 24, '0' );
$td = mcrypt_module_open ( MCRYPT_3DES, '', 'ecb', '' );
$iv = @mcrypt_create_iv ( mcrypt_enc_get_iv_size ( $td ), MCRYPT_RAND );
$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_3DES, MCRYPT_MODE_CBC );
$padding_char = $block_size - (strlen ( $data ) % $block_size);
$data .= str_repeat ( chr ( $padding_char ), $padding_char );
return $data;
}
}
?>