php实现AES 128位加密的相关操作技巧是什么?这篇文章主要介绍了PHP实现的AES 128位加密算法,结合实例形式分析了AES 128位加密的相关概念、原理及php实现AES 128位加密的相关操作技巧,注释中包含详细的说明信息,需要的朋友就来一聚教程网参考一下吧!

本文实例讲述了PHP实现的AES 128位加密算法。分享给大家供大家参考,具体如下:

/*

加密算法一般分为两种:对称加密算法和非对称加密算法。

对称加密

对称加密算法是消息发送者和接收者使用同一个密匙,发送者使用密匙加密了文件,

接收者使用同样的密匙解密,获取信息。常见的对称加密算法有:des/aes/3des.

对称加密算法的特点有:速度快,加密前后文件大小变化不大,但是密匙的保管是个大问题

,因为消息发送方和接收方任意一方的密匙丢失,都会导致信息传输变得不安全。

非对称加密

与对称加密相对的是非对称加密,非对称加密的核心思想是使用一对相对的密匙

分为公匙和私匙,私匙自己安全保存,而将公匙公开。公钥与私钥是一对,如果用公钥对数据进行加密,

只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有用对应的公钥才能解密发送数据前只需要使用接收方的公匙加密就行了。

常见的非对称加密算法有RSA/DSA:非对称加密虽然没有密匙保存问题,但其计算量大,加密速度很慢,有时候我们还需要对大块数据进行分块加密。

数字签名

为了保证数据的完整性,还需要通过散列函数计算得到一个散列值,这个散列值被称为数字签名。其特点有:

无论原始数据是多大,结果的长度相同的;

输入一样,输出也相同;

对输入的微小改变,会使结果产生很大的变化;

加密过程不可逆,无法通过散列值得到原来的数据;

常见的数字签名算法有md5,hash1等算法。

PHP的openssl扩展

openssl扩展使用openssl加密扩展包,封装了多个用于加密解密相关的PHP函数,极大地方便了对数据的加密解密。 常用的函数有:

对称加密相关:

string openssl_encrypt ( string $data , string $method , string $password)

其中$data为其要加密的数据,$method是加密要使用的方法,$password是要使用的密匙,函数返回加密后的数据;

其中$method列表可以使用openssl_get_cipher_methods()来获取

其解密函数为 string openssl_encrypt ( string $data , string $method , string $password)

非对称加密相关:

它们都只需要传入证书文件(一般是.pem文件);

使用公匙加密数据,其中$data是要加密的数据;$crypted是一个引用变量,加密后的数据会被放入这个变量中;$key是要传入的公匙数据;

由于被加密数据分组时,有可能不会正好为加密位数bit的整数倍,所以需要$padding(填充补齐),

$padding的可选项有 OPENSSL_PKCS1_PADDING, OPENSSL_NO_PADDING,分别为PKCS1填充,或不使用填充;

签名函数:$data为要签名的数据;$signature为签名结果的引用变量;$priv_key_id为签名所使用的私匙;$signature_alg为签名要使用的算法

,其算法列表可以使用openssl_get_md_methods()得到

验签函数:与签名函数相对,只不过它要传入与私匙对应的公匙;其结果为签名验证结果,1为成功,0为失败,-1则表示错误;

* */

/*

* 基于百度云API的例子

* 密码一律采用AES 128位加密算法进行加密,用SK的前16位作为密钥,

* 加密后生成的二进制字节流需要转成十六进制,并以字符串的形式传到服务端

* */

function aes128WithFirst16Char($adminPass, $secretAccessKey)

{

$adminPass = pkcs5Pad($adminPass);

//把key值截取成16位的

$secretAccessKey = substr($secretAccessKey, 0, 16);

//进行AES加密

$crypted = openssl_encrypt($adminPass, 'AES-128-ECB', $secretAccessKey, OPENSSL_RAW_DATA);

//把字符串转换为16进制

return bin2hex(substr($crypted, 0, 16));

}

//把密码填充成16位

function pkcs5Pad($adminPass)

{

$pad = 16 - (strlen($adminPass) % 16);

return $adminPass . str_repeat(chr($pad), $pad);

}

echo aes128WithFirst16Char('加密的密码','key值');

php aes 128位加密,php实现AES 128位加密的相关操作技巧分享相关推荐

  1. java aes128加密解密_java AES 128 位加密解密算法

    最近在做app后台的服务器,使用到AES加密解密算法,无奈网上的都不符合要求,于是自己借鉴着写了一个AES加密解密工具. 密钥长度问题 默认 Java 中仅支持 128 位密钥,当使用 256 位密钥 ...

  2. java aes 模式_Java实现多种加密模式的AES算法-总有一种你用的着!

    前言 对于AES算法,相信很多程序员小伙伴都听过.用过,其原理本文就不介绍了,而是讲讲在实际项目中的应用.前几天,项目需要跟乙方接口对接,乙方提供加密后的信息串,而我这边负责对加密串进行解密.其中加解 ...

  3. Java加密算法—对称加密(DES、AES)

    目录 1.概述 2.加密模式 2.1 ECB 2.2 CBC 3.填充模式 4.对称加密.解密实现 1.概述 对称加密就是采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,也称为单密 ...

  4. Android采用AES+RSA的加密机制对http请求进行加密

    前言 最近维护公司APP应用的登录模块,由于测试人员用Fiddler抓包工具抓取到了公司关于登录时候的明文登录信息.虽然使用的是HTTPS的方式进行http请求的,但还是被Fiddler抓到了明文内容 ...

  5. springboot+vue接口加密:RSA+AES

    1. 整体预览 整体思想为: 先使用AES对数据进行加密,再使用RSA对AES密钥进行加密. 至于为什么要使用这种方式呢?总结起来大致就是又安全速度又快. 1. RSA算法复杂,比较耗时,但比较安全 ...

  6. java实现多种加密模式的AES算法-总有一种你用的着

    对于AES算法,相信很多程序员小伙伴都听过.用过,其原理本文就不介绍了,而是讲讲在实际项目中的应用.前几天,项目需要跟乙方接口对接,乙方提供加密后的二维码信息串,而我这边负责对加密串进行解密.其中加解 ...

  7. 浅谈客户端与服务端的加密通讯(HTTPS/AES/RSA/RequestBodyAdviceAdapter/ResponseBodyAdvice)

    目录 前言 HTTPS与SSL证书 AES对称加密 RSA非对称加密 AES + RSA 组合加密 服务端请求参数解密拦截器RequestBodyAdviceAdapter 服务端返回参数加密拦截器R ...

  8. 0宽字符加密_前端AES加密方式分析,及其python实现

    在前端常见的加密方式中AES很少使用,因为相对于非对称的RSA安全性很低,AES是典型的对称加密,密钥就在前端源码里. 案列网站是http://ewt360.com,一个并不复杂的网站,首先抓个包看看 ...

  9. DES加密解密与AES加密解密

    × 目录 [1]AES加密算法和DES加密算法的效率比较 [2]AES和DES加密解密代码 随着开发时间的变长,当初认为比较难的东西,现在渐渐也就变的不那么难了!特别对于一些经常很少使用的类,时间长了 ...

最新文章

  1. Java进阶篇(六)——Swing程序设计(上)
  2. OpenJ_Bailian——4115鸣人和佐助(带状态的A*)
  3. Qt中查看ui_xxx.h文件方法
  4. qmap不能作为信号与槽的传递_撩妹 | 女生对你有好感的三个信号,千万别错过了...
  5. 图像处理-空间域锐化滤波
  6. C++实现对数学基本运算表达式的解析
  7. 轻量级自动化运维工具ansible之一:初步介绍及简单运用
  8. python pyquery倒数第二个节点之前的节点_Python中PyQuery库的使用总结
  9. Java Web ConnectionPool (连接池技术)
  10. php java session共享_PHP实现多服务器session共享之NFS共享
  11. if __name__ == __main__如何正确理解
  12. Hive语言手册-ORC
  13. 协同过滤算法:在线推荐系统如何工作?
  14. 大学女生全面超男生,一个标志性事件
  15. linux 深信服ssl_mac访问不了深信服的ssl vpn
  16. 5分钟自建数据库可视化平台,在线管理数据库也太方便了~
  17. Chapter 5 (Eigenvalues and Eigenvectors): The characteristic equation (特征方程)
  18. java使用SAXReader读取xml文件
  19. ECCV 2020 论文大盘点-手势估计篇
  20. 分享一下我的阿里3面+HR面面经,附上我总结的面试真题!

热门文章

  1. 工作中使用jasmine遇到的一个html element和Component绑定属性失去同步的问题
  2. 加入公网github上的SAP organization
  3. CRM_MESSAGES_DISPLAY debug
  4. 如何处理resource not found for the segment XXXXX error message
  5. SAP Commerce Cloud deprecation机制
  6. 如何处理错误消息Query XXX is invalid or contains errors
  7. CRM_OPPORT_TEXT_DETER_STANDARD
  8. Request download hierarchy check
  9. One order error message log and storage
  10. Java static initialization研究