不多說,直接上代碼類
然后自行依據實際情況調用即可
<?php
class STD3Des {
public static function encrypt($str, $key='xxx') {
$message = $str;
$iv = '';
$message_padded = $message;
$message_padded = self::pkcs5_pad($message_padded, 8);
if (strlen($message_padded) % 8) {
$message_padded = str_pad($message_padded, strlen($message_padded) + 8 - strlen($message_padded) % 8, "\0");
}
//$message_padded = self::pkcs5_pad($message_padded, 8);//原來是在這打包的,運行了一下發(fā)現密文不一樣,就改到上面了
// $encrypted_mcrypt = mcrypt_encrypt(MCRYPT_3DES, $key,
// self::pkcs5_pad($message, 8), MCRYPT_MODE_ECB, $iv);
$encrypted_openssl = openssl_encrypt($message_padded, "DES-EDE3", $key, OPENSSL_RAW_DATA | OPENSSL_NO_PADDING);
//return strtoupper(bin2hex($encrypted_mcrypt));
return bin2hex($encrypted_openssl);
}
public static function encrypt_ECB($str, $key) {
$message = $str;
$iv = '';
$message_padded = $message;
$message_padded = self::pkcs5_pad($message_padded, 8);
if (strlen($message_padded) % 8) {
$message_padded = str_pad($message_padded, strlen($message_padded) + 8 - strlen($message_padded) % 8, "\0");
}
//$message_padded = self::pkcs5_pad($message_padded, 8);//原來是在這打包的,運行了一下發(fā)現密文不一樣,就改到上面了
// $encrypted_mcrypt = mcrypt_encrypt(MCRYPT_3DES, $key,
// self::pkcs5_pad($message, 8), MCRYPT_MODE_ECB, $iv);
$encrypted_openssl = openssl_encrypt($message_padded, "DES-EDE3", $key, OPENSSL_RAW_DATA | OPENSSL_NO_PADDING);
//return strtoupper(bin2hex($encrypted_mcrypt));
//return bin2hex($encrypted_openssl);
return base64_encode($encrypted_openssl);
}
public static function decrypt_ECB($encrypted, $key) {//數據解密
$data = base64_decode($encrypted);
// $data = $encrypted;
$decrypted_openssl = openssl_decrypt($data, 'DES-EDE3', $key, OPENSSL_RAW_DATA);
return $decrypted_openssl;
}
public static function encrypt_CFB8($str, $key, $iv) {
$message = $str;
$message_padded = $message;
$message_padded = self::pkcs5_pad($message_padded, 8);
if (strlen($message_padded) % 8) {
$message_padded = str_pad($message_padded, strlen($message_padded) + 8 - strlen($message_padded) % 8, "\0");
}
$encrypted_openssl = openssl_encrypt($message_padded, "DES-EDE3-CFB8", $key, OPENSSL_RAW_DATA | OPENSSL_NO_PADDING, $iv);
return base64_encode($encrypted_openssl);
}
public static function decrypt($encrypted, $key) {//數據解密
$data = hex2bin($encrypted);
// $data = $encrypted;
$decrypted_openssl = openssl_decrypt($data, 'DES-EDE3', $key, OPENSSL_RAW_DATA);
return $decrypted_openssl;
}
private static function pkcs5_pad($text, $blocksize) {
$pad = $blocksize - (strlen($text) % $blocksize);
return $text . str_repeat(chr($pad), $pad);
}
}
//$encrypted_openssl =STD3Des::encrypt('0123456789', 'test0123456789');
//echo 'encrypted_openssl=='.$encrypted_openssl.'<br />';
//034dcda761d12373f82b025355c6870d
//echo STD3Des::decrypt($encrypted_openssl, 'test0123456789');
/**
*
(1)進行3DES加密(ECB模式)。注:加密密鑰不足24位長度時后面補0,超過24位長度時需截取前24位字符。
(2)將加密后的密文進行hex轉換。
3DES測試結果比對:
密鑰:test0123456789
測試數據:0123456789
加密結果:034dcda761d12373f82b025355c6870d
*/
?>
自行了解引用,有測試示例在代碼中
1.
2.
3.
4.
5.
6.文章來源:http://www.zghlxwxcb.cn/news/detail-537148.html
7.文章來源地址http://www.zghlxwxcb.cn/news/detail-537148.html
到了這里,關于PHP 3DES加密的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!