热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php加密后数据减少,php数据加密及数据存储和传输

一、前言个人认为,PHP是世界上为数不多,最人性化的语言。虽然是二次开发、弱类型语言,由CC编写的PHP引擎去解析。但是,其

一、前言

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

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

二、PHP数据加密

数据加密的类型有:

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

1. MD5、sha1、sha256

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

例如:

1

2. CRC32

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

例如:

1

注:

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

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

3. base64_encode和base64_decode

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

例如:

1


';5 echo strtr(base64_encode($tr), 'c=Z', '-_/');6 echo '
';7 $rtr = strtr(base64_encode($tr), '-_', 'c=z');

strtr函数描述:

详情请查看php.net

简单介绍:字符串替换。

4. password_hash、password_valid

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

例如:

1 //算法递归层数

2 $cost = 4;3 //盐值

4 $salt = '1234567891234567891234';5 //指定盐值 最小值22; 指定算法递归层数 最小值4 最大值 25

6 echo password_hash('123456', PASSWORD_DEFAULT, ['cost' => $cost, 'salt' => $salt]);7 echo '


';8 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 。

参考文献:



推荐阅读
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 本文深入探讨了UNIX/Linux系统中的进程间通信(IPC)机制,包括消息传递、同步和共享内存等。详细介绍了管道(Pipe)、有名管道(FIFO)、Posix和System V消息队列、互斥锁与条件变量、读写锁、信号量以及共享内存的使用方法和应用场景。 ... [详细]
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • 在高并发需求的C++项目中,我们最初选择了JsonCpp进行JSON解析和序列化。然而,在处理大数据量时,JsonCpp频繁抛出异常,尤其是在多线程环境下问题更为突出。通过分析发现,旧版本的JsonCpp存在多线程安全性和性能瓶颈。经过评估,我们最终选择了RapidJSON作为替代方案,并实现了显著的性能提升。 ... [详细]
  • 深入解析Spring启动过程
    本文详细介绍了Spring框架的启动流程,帮助开发者理解其内部机制。通过具体示例和代码片段,解释了Bean定义、工厂类、读取器以及条件评估等关键概念,使读者能够更全面地掌握Spring的初始化过程。 ... [详细]
  • 本文详细介绍了如何在Android 4.4及以上版本中配置WebView以实现内容的自动高度调整和屏幕适配,确保中文显示正常,并提供代码示例。 ... [详细]
  • 对于许多初学者而言,遇到总线错误(bus error)或段错误(segmentation fault/core dump)是极其令人困扰的。本文详细探讨了这两种错误的成因、表现形式及解决方法,并提供了实用的调试技巧。 ... [详细]
  • 本文详细介绍了C语言中的基本数据类型,包括整型、浮点型、字符型及其各自的子类型,并探讨了这些类型在不同编译环境下的表现。 ... [详细]
  • 在寻找轻量级Ruby Web框架的过程中,您可能会遇到Sinatra和Ramaze。两者都以简洁、轻便著称,但它们之间存在一些关键区别。本文将探讨这些差异,并提供详细的分析,帮助您做出最佳选择。 ... [详细]
  • CentOS 7.6环境下Prometheus与Grafana的集成部署指南
    本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ... [详细]
  • springMVC JRS303验证 ... [详细]
  • java文本编辑器,java文本编辑器设计思路
    java文本编辑器,java文本编辑器设计思路 ... [详细]
  • 本文详细解析了Java中throw和throws的关键区别,同时涵盖了JDK的定义、Java虚拟机的关键约定、Java的跨平台性、自动垃圾回收机制、源文件结构、包的概念及作用等多个核心知识点,旨在帮助学生更好地准备Java期末考试。 ... [详细]
  • 本文探讨了在Java中如何正确地将多个不同的数组插入到ArrayList中,避免所有数组在插入后变得相同的问题。我们将分析代码中的问题,并提供解决方案。 ... [详细]
author-avatar
小p揪脸包918
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有