PHP内置加密函数详解


Posted in PHP onNovember 20, 2016

Md5()加密算法

方式: 单向加密

语法: md5(string $str [, bool $raw_output = false])

$str:原始字符串

$raw_output:如果可选的raw_output被设置为true, 那么md5报文摘要将以16字节长度的原始二进制格式返回. 返回以32位字符十六进制数字形式返回散列值

md5二次加密:md5(md5($string, true))

Crypt()加密算法

方式: 单向加密

语法: string crypt(string $str[, string $salt]) , 返回一个基于标准UNIX DES算法或系统上其它可用的替代算法的三列字符串

$str: 需要加密的明文

$salt: 加密时的干扰串,是编码更安全

注意: 如果加密时没有加上这个$salt参数, 将随机生成一个干扰串, 否则刷新加密秘文不变

算法常量:

[CRYPT_SALT_LENGTH]

默认的加密长度。使用标准的 DES 加密,长度为 2

[CRYPT_STD_DES]

基于标准 DES 算法的散列使用 "./0-9A-Za-z" 字符中的两个字符作为盐值。在盐值中使用非法的字符将导致 crypt() 失败。

[CRYPT_EXT_DES]

扩展的基于 DES 算法的散列。其盐值为 9 个字符的字符串,由 1 个下划线后面跟着 4 字节循环次数和 4 字节盐值组成。它们被编码成可打印字符,每个字符 6 位,有效位最少的优先。0 到 63 被编码为 "./0-9A-Za-z"。在盐值中使用非法的字符将导致 crypt() 失败。

[CRYPT_MD5]

MD5 散列使用一个以 $1$ 开始的 12 字符的字符串盐值。

[CRYPT_BLOWFISH]

Blowfish 算法使用如下盐值:“$2a$”,一个两位 cost 参数,“$” 以及 64 位由 “./0-9A-Za-z” 中的字符组合而成的字符串。在盐值中使用此范围之外的字符将导致 crypt() 返回一个空字符串。两位 cost 参数是循环次数以 2 为底的对数,它的范围是 04-31,超出这个范围将导致 crypt() 失败。

CRYPT_SHA256

SHA-256 算法使用一个以 $5$ 开头的 16 字符字符串盐值进行散列。如果盐值字符串以 “rounds=<N>$” 开头,N 的数字值将被用来指定散列循环的执行次数,这点很像 Blowfish 算法的 cost 参数。默认的循环次数是 5000,最小是 1000,最大是 999,999,999。超出这个范围的 N 将会被转换为最接近的值。

CRYPT_SHA512

SHA-512 算法使用一个以 $6$ 开头的 16 字符字符串盐值进行散列。如果盐值字符串以 “rounds=<N>$” 开头,N 的数字值将被用来指定散列循环的执行次数,这点很像 Blowfish 算法的 cost 参数。默认的循环次数是 5000,最小是 1000,最大是 999,999,999。超出这个范围的 N 将会被转换为最接近的值。

例:

if(CRYPT_MD5){
  echo "MD5加密:".crypt('something','$1$somethin$');
}

Sha1()加密算法

方式: 单向加密

语法: string sha1(string $str [, bool $raw_output=false]) 计算字符串的sha1散列值

$str: 加密的字符串

$raw_output: 如果可选的raw_output参数被设置为TRUE, 那么sha1摘要将以20字符长度的原始格式返回, 否则返回值是一个40字符串长度的十六进制数字.

URL编码加密技术

编码URL字符串: urlencode(string $str)

解码已编码的URL字符串: urldeocde(string $str)

编码规范: 此字符串中除了-_.之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数, 空格则编码为加号(+)

按照RFC1738对URL进行编码: rawurlencode(string $str) : 返回从字符串,把空格编码为%20

对已编码的字符串进行解码: rawurldecode(string $str) : 返回字符串, 此字符串中百分号%后跟两位十六进制的序列豆将被替换成原义字符

urlencode和rawurlencode的区别只在于空格.

Base64编码加密技术

使用base64对data进行编码: base64_encode(string $data)

对使用MIME base64编码的数据进行解码: base64_decode(string $data[, $strict=false]) ; $strict:如果输入的数据超出了base64的字母表,则返回false.

base64编码的图片还可以直接放在<img>标签中显示:

<img src="data:image/jpeg;base64,编码字符串" alt=""/>

<img src="data:;base64,编码字符串" alt=""/>

信息加密技术:

1 单项散列加密:

指通过不同输入的长度的信息进行散列计算, 得到固定长度的输出, 这个散列计算过程是单向的, 既不能对固定长度的输出进行计算从而活儿输出信息.

2 对称散列加密

指加密和解密的密匙是同一个密匙或者可以互相推算.

3 非对称散列加密

非对称加密和解密的密匙不是同一个密匙, 其中一个对外公开, 被称作公钥, 另一个只有所有者知道.

PHP 相关文章推荐
一些需要禁用的PHP危险函数(disable_functions)
Feb 23 PHP
php引用地址改变变量值的问题
Mar 23 PHP
php中根据变量的类型 选择echo或dump
Jul 05 PHP
在smarty中调用php内置函数的方法
Feb 07 PHP
浅析php插件 HTMLPurifier HTML解析器
Jul 01 PHP
PHP中spl_autoload_register()和__autoload()区别分析
May 10 PHP
ThinkPHP3.1新特性之多数据库操作更加完善
Jun 19 PHP
php使用substr()和strpos()联合查找字符串中某一特定字符的方法
May 12 PHP
详解yii2使用多个数据库的案例
Jun 16 PHP
ThinkPHP 5.x远程命令执行漏洞复现
Sep 23 PHP
php 使用 __call实现重载功能示例
Nov 18 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
Feb 18 PHP
php PDO异常处理详解
Nov 20 #PHP
php.ini中date.timezone设置详解
Nov 20 #PHP
centos 7.2下搭建LNMP环境教程
Nov 20 #PHP
浅析php中array_map和array_walk的使用对比
Nov 20 #PHP
php解决DOM乱码的方法示例代码
Nov 20 #PHP
使用Yii2实现主从数据库设置
Nov 20 #PHP
php 二维数组时间排序实现代码
Nov 19 #PHP
You might like
php include,include_once,require,require_once
2008/09/05 PHP
PHP和JavaScrip分别获取关联数组的键值示例代码
2013/09/16 PHP
PHP5.3安装Zend Guard Loader图文教程
2014/09/29 PHP
Yii2.0 模态弹出框+ajax提交表单
2016/05/22 PHP
jQuery ajax BUG:object doesn't support this property or method
2010/07/06 Javascript
js清除input中type等于file的值域(示例代码)
2013/12/24 Javascript
Html5的placeholder属性(IE兼容)实现代码
2014/08/30 Javascript
使用AngularJS中的SCE来防止XSS攻击的方法
2015/06/18 Javascript
javascript实现label标签跳出循环操作
2016/03/06 Javascript
前端性能优化及技巧
2016/05/06 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(一)
2016/05/17 Javascript
JS模仿腾讯图片站的图片翻页按钮效果完整实例
2016/06/21 Javascript
JavaScript中最容易混淆的作用域、提升、闭包知识详解(推荐)
2016/09/05 Javascript
javascript实现消灭星星小游戏简单版
2016/11/15 Javascript
vue实现的组件兄弟间通信功能示例
2018/12/04 Javascript
vue实现跨域的方法分析
2019/05/21 Javascript
[01:08]DOTA2次级职业联赛 - Shield战队宣传片
2014/12/01 DOTA
python 使用正则表达式按照多个空格分割字符的实例
2018/12/20 Python
python设置表格边框的具体方法
2020/07/17 Python
matplotlib制作雷达图报错ValueError的实现
2021/01/05 Python
CSS3使用border-radius属性制作圆角
2014/12/22 HTML / CSS
AmazeUI在模态框中嵌入表单形成模态输入框
2020/08/20 HTML / CSS
Html5之webcoekt播放JPEG图片流
2020/09/22 HTML / CSS
Marc O’Polo俄罗斯官方在线商店:德国高端时尚品牌
2019/12/26 全球购物
学前教育学生自荐信范文
2013/12/31 职场文书
小学运动会广播稿200字(十二篇)
2014/01/14 职场文书
师说教学反思
2014/02/07 职场文书
学生社团文化节开幕式主持词
2014/03/28 职场文书
单位作风建设剖析材料
2014/10/11 职场文书
人事行政助理岗位职责
2015/04/11 职场文书
2015年科普工作总结
2015/07/23 职场文书
幼儿园小班开学寄语(2016秋季)
2015/12/03 职场文书
go语言中http超时引发的事故解决
2021/06/02 Golang
react 项目中引入图片的几种方式
2021/06/02 Javascript
拒绝盗图!教你怎么用python给图片加水印
2021/06/04 Python
Redis监控工具RedisInsight安装与使用
2022/03/21 Redis