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小偷的核心程序
Apr 09 PHP
PHP HTML代码串截取代码
Dec 29 PHP
php ignore_user_abort与register_shutdown_function 使用方法
Jun 14 PHP
PHP 自定义错误处理函数trigger_error()
Mar 26 PHP
解析php扩展php_curl.dll不加载的解决方法
Jun 26 PHP
通过table标签,PHP输出EXCEL的实现方法
Jul 24 PHP
php像数组一样存取和修改字符串字符
Mar 21 PHP
PHP执行SQL文件并将SQL文件导入到数据库
Sep 17 PHP
php集成动态口令认证
Jul 21 PHP
如何判断php mysqli扩展类是否开启
Dec 24 PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
Sep 29 PHP
php访问对象中的成员的实例方法
Nov 17 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
新的一年,新的期待:DC在2020年的四部动画电影
2020/01/01 欧美动漫
PHP屏蔽关键字实现方法
2016/11/17 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
PHP回调函数概念与用法实例分析
2017/11/03 PHP
JQUERY 对象与DOM对象之两者相互间的转换
2009/04/27 Javascript
javascript实现时间格式输出FormatDate函数
2015/01/13 Javascript
js实现网页多级级联菜单代码
2015/08/20 Javascript
Javascript日期格式化format函数的使用方法
2016/08/30 Javascript
vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)
2017/03/30 Javascript
Vue2.0父组件与子组件之间的事件发射与接收实例代码
2017/09/19 Javascript
BootStrap TreeView使用实例详解
2017/11/01 Javascript
jQuery动态移除与增加onclick属性的方法详解
2018/06/07 jQuery
js使用Promise实现简单的Ajax缓存
2018/11/14 Javascript
基于jquery实现的tab选项卡功能示例【附源码下载】
2019/06/10 jQuery
Python与Redis的连接教程
2015/04/22 Python
通过数据库对Django进行删除字段和删除模型的操作
2015/07/21 Python
python 内置函数filter
2017/06/01 Python
Python3使用pandas模块读写excel操作示例
2018/07/03 Python
Sanic框架流式传输操作示例
2018/07/18 Python
python 发送和接收ActiveMQ消息的实例
2019/01/30 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
2019/03/27 Python
python的slice notation的特殊用法详解
2019/12/27 Python
django xadmin中form_layout添加字段显示方式
2020/03/30 Python
日常奢侈品,轻松购物:Verishop
2019/08/20 全球购物
诺思信科技(南京)有限公司.NET笔试题答案
2013/07/06 面试题
应届生英语教师求职信
2013/11/05 职场文书
营业员演讲稿
2013/12/30 职场文书
中层竞聘演讲稿
2014/01/09 职场文书
车间核算员岗位职责
2014/07/01 职场文书
销售目标责任书
2014/07/23 职场文书
2015年乡镇扶贫工作总结
2015/04/08 职场文书
红色经典观后感
2015/06/18 职场文书
导游词之南京夫子庙
2019/12/09 职场文书
利用Python第三方库实现预测NBA比赛结果
2021/06/21 Python
Python requests用法和django后台处理详解
2022/03/19 Python
python模板入门教程之flask Jinja
2022/04/11 Python