php实现对称加密算法DESede
生活随笔
收集整理的這篇文章主要介紹了
php实现对称加密算法DESede
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
不清楚DES算法的可以看維基百科
<?php
class DESede{
/**
* 加密
* @param $data 待加密明文
* @param $key DES私鑰
* @param $use3des 是否啟用3DES加密,默認不啟用
*/
function encrypt($data='', $key='', $use3des = False)
{
if (empty($data) || empty($key))
{
return False;
}
$cipher = $use3des ? MCRYPT_TRIPLEDES : MCRYPT_DES;
$modes = MCRYPT_MODE_ECB;
# Add PKCS7 padding.
$block = mcrypt_get_block_size($cipher, $modes);
$pad = $block - (strlen($data) % $block);
$data .= str_repeat(chr($pad), $pad);
$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher, $modes), MCRYPT_RAND);
$encrypted = @mcrypt_encrypt($cipher, $key, $data, $modes, $iv);
return $encrypted;
}
/**
* 解密
* @param $data 待解密密文
* @param $key DES私鑰
* @param $use3des 是否啟用3DES加密,默認不啟用
*/
function decrypt($data='', $key='', $use3des = False)
{
if (empty($data) || empty($key))
{
return False;
}
$cipher = $use3des ? MCRYPT_TRIPLEDES : MCRYPT_DES;
$modes = MCRYPT_MODE_ECB;
$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher, $modes), MCRYPT_RAND);
$data = @mcrypt_decrypt($cipher, $key, $data, $modes, $iv);
# Strip padding out.
$block = mcrypt_get_block_size($cipher, $modes);
$pad = ord($data[($len = strlen($data)) - 1]);
$decrypted = substr($data, 0, strlen($data) - $pad);
return $decrypted;
}
}
總結
以上是生活随笔為你收集整理的php实现对称加密算法DESede的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为鸿蒙3.0即将发布 股市先热起来:多
- 下一篇: 80和443和8443区别