一、前言

个人认为,PHP是世界上为数不多,最人性化的语言。

虽然是二次开发、弱类型语言,由C/C++编写的PHP引擎去解析。但是,其代码优雅性和其运行速度不亚于,其他编译语言。

二、PHP数据加密

数据加密的类型有:

MD5、sha1、sha256、CRC32多项式冗余校验等。

1. MD5、sha1、sha256


描述:hash加密算法,不可逆。常用于数据验证与密码验证。

例如:

 <?php
echo md5(md5('123456' . DX))

2. CRC32

描述:多项冗余校验,不可逆。常用于校验数据的完整性,可用于校验目标文件是否修改。

例如:

 <?php
$file = realpath('main.js') . filemtime(realpath('main.js') );
echo printf("%x", crc32($file));

注:

因为PHP数值底层存储都是带符号的,这里把值处理成16进制。

如果,main.js文件被修改,则输出结果也会变化;

3. base64_encode和base64_decode

描述:数据压缩加密,可逆。常用于数据加密、传输。通常和strtr函数一起使用。

例如:

 <?php
$tr = 'www.baidu.com';
echo base64_encode($tr);
echo '<hr />';
echo strtr(base64_encode($tr), 'c=Z', '-_/');
echo '<hr />';
$rtr = strtr(base64_encode($tr), '-_', 'c=z');

strtr函数描述:

详情请查看php.net

简单介绍:字符串替换。

4. password_hash、password_valid

描述:哈希加密,不可逆。常用于数据加密和认证。

例如:

 //算法递归层数
$cost = 4;
//盐值
$salt = '1234567891234567891234';
//指定盐值 最小值22; 指定算法递归层数 最小值4 最大值 25
echo password_hash('123456', PASSWORD_DEFAULT, ['cost' => $cost, 'salt' => $salt]);
echo '<hr />';
echo password_verify('123456', '$2y$06$KfKrG52XutkMN9DcGeczVOVqGCDtMYWHk5BaqH/nu0tX/jjqhTGgO');

解析:

password_hash()

参数一:加密字符串

参数二:加密hash算法,PASSWORD_DEFAULT为默认bcrypt哈希算法。其他关于更多的算法,请百度搜索自行了解一下。

参数三:选项。数组类型,数组元素可选。

cost hash算法递归层数。

salt 哈希算法,加入的盐值,即:干扰字符。

PHP7.0建议,参数二、参数三都为默认值。

password_valid()

hash验证。

三、计算机底层数据存储和传输

一、计算机底层数据存储unicode编码。

a、计算机数据传输为UTF-8编码格式。

b、strlen对存储数据以UTF-8形式转码解析,并以8bit为一个byte进行计算字符单位长度。

c、mb_strlen() 对存储数据以UTF-8形式转码,其参数二为可指定参数。UTF-8、unicode、8bit,默认为UTF-8解析字符单位长度。若计算汉字字符,指定参数二为UTF-8,则该函数以UTF-8计算该字符长度,比如:“代码”,则是两个字节长度。

在unicode协议中,一个中文汉字为2byte。UTF-8协议中一个中文汉字为3byte。所以参数二指定为unicode时,则 “代码” 这串字符为三个单位长度。

四、总结

a. 如果我们做web应用,用于客户端登陆注册验证时,我们可以用MD5、sha1、sha256、password_hash、password_valid等哈希加密验证。

b. 如果我们让目标文件随源文件的更改而改变,那么我们就可以使用CRC32对数据进行加密,生成目标文件。

c. 计算机底层数据存储在Unicode时代,则所有字符都以两个字节存储,那么如果是单字节字符,则补位0。那么UTF-8就作为传输数据的数据编码格式出现在计算机的舞台。我们的PHP底层函数解析,都是以UTF-8的编码协议解析。在Unicode中一个中文汉字为2byte。而UTF-8中,一个中文汉字为3byte 。

参考文献:

https://www.cnblogs.com/leesf456/p/5317574.html

php数据加密及数据存储和传输的更多相关文章

  1. 探讨.NET Core数据加密和解密问题

    前言 一直困扰着我关于数据加密这一块,24号晚上用了接近3个小时去完成一项任务,本以为立马能解决,但是为了保证数据的安全性,我们开始去对数据进行加密,然后接下来3个小时专门去研究加密这一块,然而用着用 ...

  2. 大数据时代,Wyn Enterprise和您一起探讨CIO的困境和出路 ZT

    这是一篇知识分享帖,如果您致力于成为一名CIO,希望您能够阅读完,信息虽然简略,但我们依然希望可以帮到您. CIO:首席信息官 CIO是干什么的 一.经典的CIO主要负责什么 1.IT战略规划.IT预 ...

  3. 探讨.NET Core数据进行3DES加密和解密问题

    前言 一直困扰着我关于数据加密这一块,24号晚上用了接近3个小时去完成一项任务,本以为立马能解决,但是为了保证数据的安全性,我们开始去对数据进行加密,然后接下来3个小时专门去研究加密这一块,然而用着用 ...

  4. 释放数据价值:DAYU数据运营新能力解读

    摘要:从比特到信息,这说的其实就是企业数字化转型,让数据的价值充分发挥出来,变成信息. 今天,企业对数据越来越重视,数据已经成为了企业新型的资产,甚至是核心资产,最近流传一句非常有意思的话:从比特到信 ...

  5. MySQL:用户管理

    用户管理部分 一.数据库不安全因素 非授权用户对数据库的恶意存取和破坏: 数据库中重要或敏感的数据被泄露: 安全环境的脆弱性: 二.数据库安全的常用方法 用户标识和鉴别[使用口令鉴别]::该方法由系统 ...

  6. [工作中的设计模式]装饰模式decorator

    一.模式解析 装饰模式又名包装(Wrapper)模式.装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案. 装饰模式的要点主要是: 1.需要对已有对象扩展新的功能,又不希望改变原有对 ...

  7. 介绍Ext JS 4.2的新特性的《深入浅出Ext JS》上市

    以用户为中心的时代,应用的界面外观变得越来越重要.然而,很多程序员都缺乏美术功底,要开发出界面美观的应用实属不易.Ext JS的出现,为广大程序员解决了这一难题.它有丰富多彩的界面和强大的功能,是开发 ...

  8. Java文件操作①——XML文件的读取

    一.邂逅XML 文件种类是丰富多彩的,XML作为众多文件类型的一种,经常被用于数据存储和传输.所以XML在现今应用程序中是非常流行的.本文主要讲Java解析和生成XML.用于不同平台.不同设备间的数据 ...

  9. RAID对硬盘的要求及其相关

    Raid 0:至少需要两块硬盘,磁盘越多,读写速度越快,没有冗余. Raid 1:只能用两块硬盘,两块硬盘的数据互为镜像(写慢,读快),一块磁盘冗余. Raid 5:至少需要3块硬盘,一块磁盘冗余. ...

随机推荐

  1. HttpFlexSession注册失败的怪问题

    web.xml中已经注册了HttpFlexSession <listener> <listener-class>flex.messaging.HttpFlexSession&l ...

  2. CSS的框模型(div)与边距(margin、padding)

    所谓框模型,例如div标签,你就可以直接把它理解成一个相框. 这个相框里面的相片有高度和宽度,框本身也有一定的宽度.相框和别的相框之间,还有一定的边距. div设置常见属性 border:边框 pad ...

  3. HCNA配置console线路密码password认证

    1.华为设备配置主机名<Huawei>system    <Huawei>system-view Enter system view, return user view wit ...

  4. iOS设置竖屏,播放视频可以任性旋转的解决方法,亲测可用

    之前在网上找了很多方法,都是强制横屏,但是如果设备关闭旋转锁定,强制横屏后把设备竖立起来,播放器也会跟着竖过来,但是就回不去了.现在项目要求让app默认都是竖屏,只有在全屏播放的时候可以自由旋转,于是 ...

  5. 《转化:提升网站流量和转化率的技巧》:结合市场营销六阶段理论,以SEM为手段,提高网站转化率的技巧

    全书结合市场营销的六阶段理论,讲述各阶段的营销方面的要点和网站上吸引访客的技巧.举了一些例子,列举了一些工具.当然都是美国市场中的例子和网站优化的工具. 没有太多的新意.没看过相关图书的可以看看.

  6. 使用selenium 检测js报错

    背景:接到一个需求,想检测页面是否能检测js报错,何为js报错,如下图所示,在控制台中,使用console,如果有js报错,就会出现错误 如何检测,简单版操作,打开一个url,使用manage获取浏览 ...

  7. ios 逆向工程文档汇总

    iOS逆向工程工具集 http://www.jianshu.com/p/7f9511d48e05 移动App入侵与逆向破解技术-iOS篇 http://blog.csdn.net/heiby/arti ...

  8. 成绩累加排名,poj(2153)

    题目链接:http://poj.org/problem?id=2153 解题报告: 注意map中的string,因此要将char[]转换为string型. #include <iostream& ...

  9. 【转】Android UI开发第三十一篇——Android的Holo Theme

    好长时间没写Android UI方面的文章了,今天就闲扯一下Android的Holo主题.一直做android开发的可能都知道,Android 系统的UI有过两次大的变化,一次是android 3.0 ...

  10. when 让你跳出异步回调噩梦 node.js下promise/A规范的使用

    其实关于promise 的博客,前端时间专门写了一篇关于 promise 规范的文章,promise规范 让 javascript 中的异步调用更加人性化. 简单回忆下: promise/A规范定义的 ...