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数据库开发知多少
Oct 09 PHP
PHP获取网站域名和地址的代码
Aug 17 PHP
php小技巧 把数组的键和值交换形成了新的数组,查找值取得键
Jun 02 PHP
PHP关联链接常用代码
Nov 05 PHP
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)
Nov 08 PHP
php实现将wav文件转换成图像文件并在页面中显示的方法
Apr 21 PHP
33道php常见面试题及答案
Jul 06 PHP
php中preg_replace_callback函数简单用法示例
Jul 21 PHP
php使用Jpgraph创建折线图效果示例
Feb 15 PHP
php简单生成一组与多组随机字符串的方法
May 09 PHP
php实现微信发红包功能
Jul 13 PHP
phpstudy隐藏index.php的方法
Sep 21 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写的serv-u的web申请账号的程序
2006/10/09 PHP
PHP4之COOKIE支持详解
2006/10/09 PHP
批量去除PHP文件中bom的PHP代码
2012/03/13 PHP
php调用dll的实例操作动画与代码分享
2012/08/14 PHP
CodeIgniter配置之config.php用法实例分析
2016/01/19 PHP
php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案
2016/05/31 PHP
Javascript 兼容firefox的一些问题
2009/05/21 Javascript
jQuery EasyUI 的EasyLoader功能介绍
2010/09/12 Javascript
jQuery学习笔记 操作jQuery对象 CSS处理
2012/09/19 Javascript
ext combobox动态加载数据库数据(附前后台)
2014/06/17 Javascript
moment.js轻松实现获取当前日期是当年的第几周
2015/02/05 Javascript
基于javascript实现九宫格大转盘效果
2020/05/28 Javascript
JavaScript  event对象整理及详细介绍
2016/10/10 Javascript
js控制li的隐藏和显示实例代码
2016/10/15 Javascript
Angular2下使用pdf插件的方法详解
2017/04/29 Javascript
fullpage.js最后一屏滚动方式
2018/02/06 Javascript
Chart.js 轻量级HTML5图表绘制工具库(知识整理)
2018/05/22 Javascript
浅析webpack-bundle-analyzer在vue-cli3中的使用
2019/10/23 Javascript
bootstrap-closable-tab可实现关闭的tab标签页插件
2020/08/09 Javascript
tensorflow实现对图片的读取的示例代码
2018/02/12 Python
python机器学习之随机森林(七)
2018/03/26 Python
PyCharm安装第三方库如Requests的图文教程
2018/05/18 Python
python处理multipart/form-data的请求方法
2018/12/26 Python
python 有效的括号的实现代码示例
2019/11/11 Python
pygame实现烟雨蒙蒙下彩虹雨
2019/11/11 Python
python 求两个向量的顺时针夹角操作
2021/03/04 Python
详解HTML5中的picture元素响应式处理图片
2018/01/03 HTML / CSS
HTML5表单验证特性(知识点小结)
2020/03/10 HTML / CSS
瑞贝卡·明可弗包包官网:Rebecca Minkoff
2016/07/21 全球购物
Street One瑞士:德国现代时装公司
2019/10/09 全球购物
中专毕业生自荐信
2013/11/16 职场文书
大学生村官工作感言
2014/01/10 职场文书
2014优秀党员事迹材料
2014/08/14 职场文书
优秀纪检干部材料
2014/08/27 职场文书
2015社区精神文明建设工作总结
2015/04/21 职场文书
爱国主义主题班会
2015/08/14 职场文书