PHP分享几种常用的加密方式
2019-08-09 05:48:21来源:编程学习网 阅读 ()
应用场景分别为:用户的唯一标识(文章加密id防止爬虫)、生成有规律的code、登录密码的加密
使用hashids加密demo(用户的唯一标识、文章加密id防止爬虫)字符串与十六进制之间的转换加密(生成有规律的code)
/** * 字符串转十六进制 * @param $string * @return string */ public function str_encode($string) { $hex=""; for($i=0;$i<strlen($string);$i++){ $hex.=dechex(ord($string[$i])); } $hex=strtolower($hex); return $hex; } /** * 十六进制转字符串 * @param $hex * @return string */ public function str_decode($hex){ $string=""; for($i=0;$i<strlen($hex)-1;$i+=2){ $string.=chr(hexdec($hex[$i].$hex[$i+1])); } return $string; }
当用户登录账号密码的时候是明文传输的,如图:
所以要修改为密后的密码,这样比较安全
登录密码的加密
/** * 生成key和iv的地址:https://asecuritysite.com/encryption/keygen * https://asecuritysite.com/encryption/PBKDF2z */ /** * @param string $string 需要加密的字符串 * @return string */ public function encrypt($string) { // openssl_encrypt 加密不同Mcrypt,对秘钥长度要求,超出16加密结果不变 $data = openssl_encrypt($string, 'AES-192-CBC',pack('H*', env('ENCRYPT_KEY')), OPENSSL_RAW_DATA,pack('H*', env('ENCRYPT_IV'))); $data = base64_encode($data); return $data; } /** * @param string $string 需要解密的字符串 * @return string */ public function decrypt($string) { $decrypted = openssl_decrypt(base64_decode($string), 'AES-192-CBC', pack('H*', env('ENCRYPT_KEY')), OPENSSL_RAW_DATA,pack('H*', env('ENCRYPT_IV'))); return $decrypted; }
ENCRYPT_KEY=ENCRYPT_KEY ENCRYPT_IV=ENCRYPT_IV以上采用AES-192-CBC加密方式
AES:
aes是基于数据块的加密方式,也就是说,每次处理的数据时一块(16字节),当数据不是16字节的倍数时填充,这就是所谓的分组密码(区别于基于比特位的流密码),16字节是分组长度分组加密的几种模式:
ECB:是一种基础的加密方式,密文被分割成分组长度相等的块(不足补齐),然后单独一个个加密,一个个输出组成密文。CBC:是一种循环模式,前一个分组的密文和当前分组的明文异或或操作后再加密,这样做的目的是增强破解难度。CFB/OFB:实际上是一种反馈模式,目的也是增强破解的难度。FCB和CBC的加密结果是不一样的,两者的模式不同,而且CBC会在第一个密码块运算时加入一个初始化向量。原文链接:http://www.phpxs.com/post/6417/
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- PHP访问MySQL查询超时怎么办 2020-03-09
- PHP简单实现单点登录功能示例 2019-10-09
- 关于php开启错误提示的总结 2019-10-09
- PHP进阶学习之垃圾回收机制详解 2019-10-09
- thinkphp5框架前后端分离项目实现分页功能的方法分析 2019-10-08
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash