AES算法加密模式和填充方式有如下一些(可能不完整)

算法/模式/填充 16字节加密后数据长度 不满16字节加密后长度 AES/CBC/NoPadding 16 不支持 AES/CBC/PKCS5Padding 32 16 AES/CBC/ISO10126Padding 32 16 AES/CFB/NoPadding 16 原始数据长度 AES/CFB/PKCS5Padding 32 16 AES/CFB/ISO10126Padding 32 16 AES/ECB/NoPadding 16 不支持 AES/ECB/PKCS5Padding 32 16 AES/ECB/ISO10126Padding 32 16 AES/OFB/NoPadding 16 原始数据长度 AES/OFB/PKCS5Padding 32 16 AES/OFB/ISO10126Padding 32 16 AES/PCBC/NoPadding 16 不支持 AES/PCBC/PKCS5Padding 32 16 AES/PCBC/ISO10126Padding 32 16

利用PHP加密库 mcrypt 进行AES/CBC/NoPadding模式加密解密

$cipher = MCRYPT_RIJNDAEL_128;

$mode = MCRYPT_MODE_CBC;

$privateKey = "abcfdef123456";

$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher,$mode),MCRYPT_RAND);

$data = "Hello world!";

//加密

$encrypted = mcrypt_encrypt($cipher, $privateKey, $data, $mode, $iv);

$based_encrypted = base64_encode($encrypted);

echo $based_encrypted;

//解密

$encryptedData = base64_decode($based_encrypted);

//解密后右端会有空白字符 需要手动清除 猜测是mcrypt的一个BUG

$decrypted = rtrim(mcrypt_decrypt($cipher, $privateKey, $encryptedData, $mode, $iv),"\0");

echo ($decrypted);

?>

为了方便与其他语言进行数据交换,也可以手动指定 $iv 为一个固定的可见字符串,但是长度要与 mcrypt_create_iv 生成的一致,否则会报一个

The IV parameter must be as long as the blocksize in 的警告。这里的长度是16,所以固定的字符串常量也要是16个字符。

PS : 可以用下面的代码来检测系统是否安装了 mcrypt 模块,并查看支持哪些加密算法和模式

$cipher_list = mcrypt_list_algorithms();//mcrypt支持的加密算法列表

$mode_list = mcrypt_list_modes(); //mcrypt支持的加密模式列表

print_r($cipher_list);

print_r($mode_list);

?>

得到输出结果:

Array

(

[0] => cast-128

[1] => gost

[2] => rijndael-128

[3] => twofish

[4] => arcfour

[5] => cast-256

[6] => loki97

[7] => rijndael-192

[8] => saferplus

[9] => wake

[10] => blowfish-compat

[11] => des

[12] => rijndael-256

[13] => serpent

[14] => xtea

[15] => blowfish

[16] => enigma

[17] => rc2

[18] => tripledes

)

Array

(

[0] => cbc

[1] => cfb

[2] => ctr

[3] => ecb

[4] => ncfb

[5] => nofb

[6] => ofb

[7] => stream

)

其中 rijndael-128,rijndael-192,rijndael-256都是AES算法。当然,你如果想研究AES算法,也可以自己用PHP实现该算法,否则没有必要,使用健壮的库函数是最快捷最方便最稳固的方法。

php aes padding,PHP中的AES算法相关推荐

  1. python2.x和3.x为什么不兼容_Python中使用AES算法(解决Python2.x和3.x下运行不兼容问题)...

    两年前使用python时,碰到2.x下AES加密解密算法代码无法在3.x下顺利运行,花点时间解决了兼容问题,在2.7.3.6.3.7下运行良好. Linux系统安装依赖库比较简单,Windows下稍嫌 ...

  2. Python中的AES加解密算法

    AES加密的参数及其条件:这个AES加密的主要坑就在于这些条件,首先AES加密有几个参数 秘钥:加密的时候用秘钥,解密的时候需要同样的秘钥才能解出来 明文:需要加密的内容 模式:aes 加密常用的有E ...

  3. java aes 工具类_Java中的AES加解密工具类:AESUtils

    本人手写已测试,大家可以参考使用 package com.mirana.frame.utils.encrypt; import com.mirana.frame.constants.SysConsta ...

  4. Android中的AES加密-下

    本文为笔记,记录,写记录后为了方便查阅也为了能更好的记住 参考 什么是AES算法? 前言 本章主要是针对AES加密的原理过程进行梳理.不在于细节,了解各个参数和类的功能来帮助我们再加密是更好的选择如何 ...

  5. [译] 最佳安全实践:在 Java 和 Android 中使用 AES 进行对称加密

    原文地址:Security Best Practices: Symmetric Encryption with AES in Java and Android 最佳安全实践:在 Java 和 Andr ...

  6. Android+Java中使用Aes对称加密的工具类与使用

    场景 Android+Java中使用RSA加密实现接口调用时的校验功能: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/11146 ...

  7. 使用as3crypto在Flex中实现AES加密

    要在Flex中实现AES加密,可以通过as3crypto实现.但是as3crypto本身的用法比较复杂,一般是封装一下再调用. 下面是9RIA上的一篇文章给出的一个实现,使用中稍感不方便(见注释): ...

  8. SpringBoot+Vue中使用AES进行加解密(加密模式等对照关系)

    场景 若依前后端分离版本地搭建开发环境并运行项目的教程: 若依前后端分离版手把手教你本地搭建环境并运行项目_霸道流氓气质的博客-CSDN博客 在上面搭建起来前后端架构之后,在前后端分别进行AES方式的 ...

  9. Python中的AES加密

    文章目录 AES 加密 一.前言 1. 简介 2. 加密模式 3. 环境配置 二.算法实现 AES 加密 一.前言 1. 简介 AES,高级加密标准(Advanced Encryption Stand ...

最新文章

  1. 机器也学会如何做「阅读理解」了? 云从科技上交大提出的DCMN+ 模型为你解答!!!...
  2. Facebook参与AI芯片设计大混战!
  3. 将war包发布到测试服的常用命令
  4. spring boot报错:Unable to start embedded Tomcat server 权限不够
  5. android 4个点矫正不规则矩形_Android使用FragmentTabHost实现中间按钮凸出效果
  6. 久违的反省,容忍现在的自己
  7. MogDB/openGauss 生态工具-MTK(Migration ToolKit) 数据库迁移
  8. XamlWriter-将对象树写入Xaml
  9. css与jquery、图标字体、常用数据
  10. Java对接微信、支付宝、银联第三方支付
  11. python双色球代码_python实现双色球随机选号
  12. Linux系统Ubuntu安装kvaser Leaf Light V2驱动
  13. 使用Robot Framework实现多平台自动化测试
  14. 如何修改MySQL监听IP地址
  15. Android 精华 - 收藏全集 -
  16. Maven下载、安装与配置
  17. 20200717——python 复习 一
  18. windows phone 7开发日志(正题二,字体)
  19. 桶排序基数排序代码及简要说明
  20. Java类加载,垃圾收集

热门文章

  1. 中学计算机教育特点,新课标理念下的高中信息技术教学特点及问题分析
  2. 图数据库有哪些优点?
  3. 盘点用jQuery框架实现“for循环”的四种方式!
  4. 随机森林原始论文_【20107】喜讯|朱波同学论文被制冷与空调期刊录用
  5. Flink部署——高可用
  6. 股行者【龙虎榜小红牛分析系统5.4】发布时间2020年06月29日
  7. 你的华为手机升级EMUI10,电量变得不耐用?那是这3个功能没开吧
  8. 华为android os耗电90%,华为的新系统耗电快?原来是这些设置没关,1键关闭即可多用1天...
  9. 智慧职教解决方案-最新全套文件
  10. 云电脑用流量玩快吗?