php 3des加密解密类程序代码
php 3des加密解密是一个在数据传输中常用的一个简单的加密方式了,下面我整理了一个php 3des加密解密类程序有需要了解的朋友可进入参考.
3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称,它相当于是对每个数据块应用三次DES加密算法,由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解,3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法.
php 3des加密解密类程序代码如下:
<?php class Crypt3Des { var $key ; function Crypt3Des( $key ){ $this ->key = $key ; } 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($this->PaddingPKCS7($data)); $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 ); } //开源代码phpfensi测试数据 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 ; } } ?>用法:
$crypt = new Crypt3Des('密钥');
$a = '待加密字符串';
$code = $crypt->encrypt($a);//加密
echo $crypt->decrypt($code);//解密
查看更多关于php 3des加密解密类程序代码 - php类库的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did29552