php对称加密算法示例
这篇文章主要介绍了php对称加密算法示例,需要的朋友可以参考下
php对称加密算法
KEY 是之前定义的常量
复制代码 代码如下:
Mcrypt::encrypt();
Mcrypt::decrypt();
复制代码 代码如下:
defined('ROOT') or exit('Access Denied');
class Mcrypt{
public static function encrypt($code){
return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5(KEY), $code, MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND)));
}
public static function decrypt($code){
return mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5(KEY), base64_decode($code), MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND));
}
}
常用对称加密算法(DES/AES)类
xcrypt.php
复制代码 代码如下:
/**
* 常用对称加密算法类
* 支持密钥:64/128/256 bit(字节长度8/16/32)
* 支持算法:DES/AES(根据密钥长度自动匹配使用:DES:64bit AES:128/256bit)
* 支持模式:CBC/ECB/OFB/CFB
* 密文编码:base64字符串/十六进制字符串/二进制字符串流
* 填充方式: PKCS5Padding(DES)
*
* @author: linvo
* @version: 1.0.0
* @date: 2013/1/10
*/
class Xcrypt{
private $mcrypt;
私人 $key;
私人$模式;
私人 $iv;
私人 $blocksize;
/**
* 构造函数
*
* @param string 密钥
* @param string 模式
* @param string 向量("off":不使用 / "auto":自动 / 其他:指定值,,长度同密钥)
*/
public function __construct($key, $mode = 'cbc', $iv = "off"){
switch (strlen($key)) {
情况 8:
$this->mcrypt = MCRYPT_DES;
休息;
情况 16:
$this->mcrypt = MCRYPT_RIJNDAEL_128;
休息;
案例 32:
$this->mcrypt = MCRYPT_RIJNDAEL_256;
休息;
默认值:
die("密钥大小必须为 8/16/32");
}
$this->key = $key;
switch (strtolower($mode)){
case 'ofb':
$this->mode = MCRYPT_MODE_OFB;
if ($iv == 'off') die('OFB 必须给出 IV'); //OFB 必须有工作
break;
case 'cfb':
$this->mode = MCRYPT_MODE_CFB;
if ($iv == 'off') die('CFB 必须给出 IV'); //CFB 必须有工作
break;
case 'ecb':
$this->mode = MCRYPT_MODE_ECB;
$iv = '关闭'; //ECB 不需要提供
break;
case 'cbc':
默认值:
$this->mode = MCRYPT_MODE_CBC;
}
switch (strtolower($iv)){
case "off":
$this->iv = null;
休息;
case "auto":
$source = PHP_OS=='WINNT' ? MCRYPT_RAND:MCRYPT_DEV_RANDOM;
$this->iv = mcrypt_create_iv(mcrypt_get_block_size($this->mcrypt, $this->mode), $source);
休息;
默认值:
$this->iv = $iv;
}
}
/**
* 获取向量值
* @param string 向量值编码(base64/hex/bin)
* @return string 向量值
*/
public function getIV($code = 'base64'){
switch ($code){
case 'base64':
$ret = base64_encode($this->iv);
休息;
case 'hex':
$ret = bin2hex($this->iv);
休息;
case 'bin':
默认值:
$ret = $this->iv;
}
返回 $ret;
}
/**
* 加密
* @param string 明文
* @param string 密文编码(base64/hex/bin)
* @return string 密文
*/
public function encrypt($str, $code = 'base64'){
if ($this->mcrypt == MCRYPT_DES) $str = $this->_pkcs5Pad($str);
if (isset($this->iv)) {
$result = mcrypt_encrypt($this->mcrypt, $this->key, $str, $this->mode , $this->iv);
} else {
@$result = mcrypt_encrypt($this->mcrypt, $this->key, $str, $this->mode);
}
switch ($code){
case 'base64':
$ret = base64_encode($result);
休息;
case 'hex':
$ret = bin2hex($result);
休息;
case 'bin':
默认值:
$ret = $result;
}
返回 $ret;
}
/**
* 解密
* @param string 密文
* @param string 密文编码(base64/hex/bin)
* @return string 明文
*/
公共函数解密($str, $code = "base64"){
$ret = false;
switch ($code){
case 'base64':
$str = base64_decode($str);
休息;
case 'hex':
$str = $this->_hex2bin($str);
休息;
case 'bin':
默认值:
}
if ($str !== false){
if (isset($this->iv)) {
$ret = mcrypt_decrypt($this->mcrypt, $this->key, $str, $this->mode, $this->iv);
} else {
@$ret = mcrypt_decrypt($this->mcrypt, $this->key, $str, $this->mode);
}
if ($this->mcrypt == MCRYPT_DES) $ret = $this->_pkcs5Unpad($ret);
$ret = trim($ret);
}
返回 $ret;
}
私有函数 _pkcs5Pad($text){
$this->blocksize = mcrypt_get_block_size($this->mcrypt, $this->mode);
$pad = $this->blocksize - (strlen($text) % $this->blocksize);
返回 $text 。 str_repeat(chr($pad), $pad);
}
私有函数 _pkcs5Unpad($text){
$pad = ord($text{strlen($text) - 1});
if ($pad > strlen($text)) 返回 false;
if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) return false;
$ret = substr($text, 0, -1 * $pad);
返回 $ret;
}
私有函数 _hex2bin($hex = false){
$ret = $hex !== false && preg_match('/^[0-9a-fA-F] $/i ', $十六进制) ? pack("H*", $hex) : false;
返回 $ret;
}
}
上面类的使用方法
复制代码代码如下:

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PHP和Python各有优势,选择应基于项目需求。1.PHP适合web开发,语法简单,执行效率高。2.Python适用于数据科学和机器学习,语法简洁,库丰富。

PHP是一种广泛应用于服务器端的脚本语言,特别适合web开发。1.PHP可以嵌入HTML,处理HTTP请求和响应,支持多种数据库。2.PHP用于生成动态网页内容,处理表单数据,访问数据库等,具有强大的社区支持和开源资源。3.PHP是解释型语言,执行过程包括词法分析、语法分析、编译和执行。4.PHP可以与MySQL结合用于用户注册系统等高级应用。5.调试PHP时,可使用error_reporting()和var_dump()等函数。6.优化PHP代码可通过缓存机制、优化数据库查询和使用内置函数。7

PHP和Python各有优势,选择依据项目需求。1.PHP适合web开发,尤其快速开发和维护网站。2.Python适用于数据科学、机器学习和人工智能,语法简洁,适合初学者。

PHP在电子商务、内容管理系统和API开发中广泛应用。1)电子商务:用于购物车功能和支付处理。2)内容管理系统:用于动态内容生成和用户管理。3)API开发:用于RESTfulAPI开发和API安全性。通过性能优化和最佳实践,PHP应用的效率和可维护性得以提升。

PHP仍然具有活力,其在现代编程领域中依然占据重要地位。1)PHP的简单易学和强大社区支持使其在Web开发中广泛应用;2)其灵活性和稳定性使其在处理Web表单、数据库操作和文件处理等方面表现出色;3)PHP不断进化和优化,适用于初学者和经验丰富的开发者。

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

PHP适合web开发,特别是在快速开发和处理动态内容方面表现出色,但不擅长数据科学和企业级应用。与Python相比,PHP在web开发中更具优势,但在数据科学领域不如Python;与Java相比,PHP在企业级应用中表现较差,但在web开发中更灵活;与JavaScript相比,PHP在后端开发中更简洁,但在前端开发中不如JavaScript。

PHP和Python各有优劣,选择取决于项目需求和个人偏好。1.PHP适合快速开发和维护大型Web应用。2.Python在数据科学和机器学习领域占据主导地位。
