php 3DES加密 总有一款适合你

/**
 * 进行3des ecb 模式加密
 *
 * @param $message
 * @param string $key
 * @return string
 */
public function encode($message){
    $message = $this->pkcs5Pad($message, 8);
    if (strlen($message) % 8) {
        $message_padded = str_pad($message,
            strlen($message) + 8 - strlen($message) % 8, "\0");
    }

    return  openssl_encrypt($message, 'DES-EDE3', $key = '', OPENSSL_RAW_DATA | OPENSSL_NO_PADDING);

}

/**
 * 进行3des ecb 模式加密
 *
 * @param $message
 * @param string $key
 * @return string
 */
public function ecbEncode($message){
    $key = '';

    $m = MCRYPT_TRIPLEDES;

    $iv = mcrypt_create_iv(mcrypt_get_iv_size($m,MCRYPT_MODE_ECB), MCRYPT_RAND);

    $td = mcrypt_module_open(MCRYPT_3DES, '', MCRYPT_MODE_ECB, '');
    mcrypt_generic_init($td, $key, $iv);

    return mcrypt_generic($td,$this->pkcs5_padding($message, 8));


}

/**
 * 进行3des ecb 模式加密
 *
 * @param $message
 * @param string $key
 * @return string
 */
public function ecbEncode1($message){
    $key = '';
    $string = $this->PaddingPKCS7($message);


    //初始化向量来增加安全性
    $td = mcrypt_module_open( MCRYPT_3DES, '', MCRYPT_MODE_ECB, '' );
    $iv = mcrypt_create_iv( mcrypt_enc_get_iv_size( $td ), MCRYPT_RAND );
    mcrypt_generic_init( $td, $key, $iv );

    //开始加密
    return mcrypt_generic( $td, $string );


}

public function encrypt($text)
{
    $key = '';
    $iv   = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_TRIPLEDES,MCRYPT_MODE_ECB), MCRYPT_RAND);
    $text = $this->pkcs5Pad1($text);
    $td = mcrypt_module_open(MCRYPT_3DES,'',MCRYPT_MODE_ECB,'');
    mcrypt_generic_init($td,$key,$iv);
    $data = mcrypt_generic($td, $text);
    mcrypt_generic_deinit($td);
    mcrypt_module_close($td);
    return $data;

}

/**
 * 使用pkcs5填充
 *
 * @param $text
 * @param $blockSize
 * @return string
 */
function pkcs5Pad($text, $blockSize) {
    $pad = $blockSize - (strlen ( $text ) % $blockSize);
    return $text . str_repeat ( chr ( $pad ), $pad );
}

function PaddingPKCS7($input) {
    $srcdata = $input;
    $block_size = mcrypt_get_block_size('tripledes', 'ecb');
    $padding_char = $block_size - (strlen($input) % $block_size);
    $srcdata .= str_repeat(chr($padding_char),$padding_char);
    return $srcdata;
}

function pkcs5_padding($text, $blocksize)
{
    $pad = $blocksize - (strlen($text) % $blocksize);
    return $text . str_repeat(chr($pad), $pad);
}

/**
 * @param $text
 * @return string
 */
private function pkcs5Pad1($text)
{
    $pad = 8 - (strlen($text) % 8);
    return $text . str_repeat(chr($pad), $pad);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值