首页 » 网站建设 » aesphpios技巧_PHP之AES加密算法

aesphpios技巧_PHP之AES加密算法

访客 2024-11-30 0

扫一扫用手机浏览

文章目录 [+]

利用AES须要把稳下面几点:

1) 确保都利用MCRYPT_MODE_CBC;2) 确保明文添补都利用的是Pkcs5;3) 加密key在AES_128长度必须是16, 24, 或者 32 字节(bytes);如果不足长必须添补,过长必须截取,建议直接md5;4) 加密向量iv与加密key有同样的约定,但在ECB可以忽略该值(用不到)。
5) 把稳加密结果建议都利用base64编码。

aesphpios技巧_PHP之AES加密算法

只有以上都保持一样,各个措辞里终极加密的密文才能保持同等,否则会涌现:1) 每次加密的密文不一样,但是能解密;(iv随机天生导致的)2) 不同措辞加密出来的密文不一致。

aesphpios技巧_PHP之AES加密算法
(图片来自网络侵删)

各种措辞实现示例

PHP

示例:

PHP利用Mcrypt扩展

这里还是利用上文的Crypt类。

利用ECB + Pkcs7
和其它措辞联调的时候须要把稳加密key已经由处理、加密向量默认值的设置。

输出结果:

3+WQyhMavuxzPzy40PZhJg==123456--------------mdSm0RmB+xAKrTah3DG31A==123456

本例里当key长度不足时,封装的类已经自动帮我们添补好了足够长度;当key长度即是16时,key的值不会改变。

PHP版的SDK

只要把DES改为AES即可,ECB改为CBC,块大小改为16。

ECB模式没有用到向量。
本例为CBC,加密结果不变。
但是加密向量则不一样了。

终极的一点是偏移量的问题,一定要调用pkcs5_unpad方法去除由于偏移量要求后,返回的前后都有乱码的问题,重点是调试去除返回数值{}前后的代码,一定记住你通报的偏移量和这个方法里的偏移量要同等,不然会有乱码去除不完全

Python

环境:Python 2.7.5,Linux CentOS7

须要先安装:

输出:

mdSm0RmB+xAKrTah3DG31A==123456

这里利用了AES+ECB+PKCS7Padding方法。
加密结果和PHP是同等的。

做事端/客户端加密选型

DES/CBC/PKCS7Padding

此时加密块大小都是8字节,PKCS5和PKCS7效果一样。
各端实现的时候须要把稳:1) 利用相同的加密key,把稳长度必须是8字节;2) 利用相同的向量iv,建议设置成\公众\公众;3) 必须实现相同的PKCS7添补算法和反添补算法;4) 加密结果都利用base64编码。

AES/ECB/PKCS7Padding

利用AES_128加密块大小都是16字节,PKCS5无法利用,请利用PKCS7。
各端实现的时候须要把稳:1) 利用相同的加密key,把稳长度必须是16, 24, 或者 32 字节(bytes);如果不足长必须添补,过长必须截取,建议直接md5;2) 利用相同的向量iv,建议设置成\"大众\公众;可以和加密key一样利用md5后的值;ECB模式下可以忽略该项;3) 必须实现相同的PKCS7添补算法和反添补算法;4) 加密结果都利用base64编码。

AES/CBC/PKCS7Padding

AES/ECB/PKCS7Padding基本同等,但由于CBC模式用到向量,把稳向量长度最少16字节。
如果长度不足,请添补\"大众\"大众。
建议随机天生,然后base64后传给前端。

常用库先容

Mcrypt

Mcrypt 是一个功能强大的加密算法扩展库。

Mcrypt 库供应了对多种块算法的支持, 包括:DES,TripleDES,Blowfish (默认), 3-WAY,SAFER-SK64,SAFER-SK128,TWOFISH,TEA,RC2 以及 GOST,并且支持 CBC,OFB,CFB 和 ECB 密码模式。

PHP里通过启用 Mcrypt 扩展即可利用(mcrypt_开头的系列函数)。
把稳的是,要利用该扩展,必须首先安装mcrypt标准类库,而 mcrypt 标准类库依赖 libmcrypt 和 mhash 两个库。
从 PHP 5.0.0 开始,须要利用 libcrypt 2.5.6 或更高版本。

Crypto-JS

https://github.com/brix/crypto-js

CryptoJS (crypto.js) 为 JavaScript 供应了各种各样的加密算法。
目前已支持的算法包括:

MD5

SHA-1

SHA-256

AES

Rabbit

MARC4

HMAC

HMAC-MD5

HMAC-SHA1

HMAC-SHA256

PBKDF2

PyCrypto

https://github.com/dlitz/pycrypto

PyCrypto是利用Python编写的加密工具包。
支持所有主流算法。

hashlib

Python的hashlib供应了常见的择要算法,如MD5,SHA1等等。

Crypt_DES.php

https://my.oschina.net/u/995648/blog/113390

通过纯PHP实现的DES加密。
示例:

在线工具

1、在线加密解密(也可自行百度,网上工具很多)http://tool.oschina.net/encrypt?type=2

标签:

相关文章

介绍皮肤设置,如何打造理想肌肤状态

随着科技的发展和人们对美的追求,皮肤设置已成为美容护肤的重要一环。如何根据皮肤类型、肤质、年龄等因素进行合理设置,已成为众多爱美人...

网站建设 2025-01-03 阅读1 评论0

介绍盖章制作,传承文化,彰显权威

自古以来,盖章在我国文化中具有重要的地位。从古代的官印、私印到现代的公章、合同章,盖章已成为一种独特的文化符号,承载着丰富的历史内...

网站建设 2025-01-03 阅读1 评论0

介绍监控破坏,技术手段与法律风险并存

随着科技的飞速发展,监控设备已遍布大街小巷,成为维护社会治安的重要手段。一些不法分子为了逃避法律制裁,开始研究如何破坏监控设备。本...

网站建设 2025-01-03 阅读1 评论0

介绍登录不上之谜,技术故障还是人为疏忽

随着互联网的普及,登录已成为人们日常生活中不可或缺的一部分。在享受便捷的登录不上这一问题也困扰着许多用户。本文将深入剖析登录不上之...

网站建设 2025-01-03 阅读1 评论0

介绍电脑键盘调出方法,让操作更高效

随着科技的发展,电脑已经成为了我们日常生活中不可或缺的工具。而电脑键盘,作为电脑输入设备,更是我们与电脑进行交流的桥梁。你是否知道...

网站建设 2025-01-03 阅读1 评论0

介绍磁力链,高效便捷的文件下载利器

在互联网高速发展的今天,文件下载已成为日常生活中不可或缺的一部分。而磁力链作为一种新型的文件下载方式,凭借其高效、便捷的特点,受到...

网站建设 2025-01-03 阅读1 评论0