分享一个标准PHP的AES加密算法类,其中mcrypt_get_block_size('rijndael-128', 'ecb');,如果在不明白原理的情况下比较容易搞错,可以通过mcrypt_list_algorithms函数查看你需要的加密算法标识。

<?php
/*** AES128加解密类* @author dy**/
defined('InEjbuy') or exit('Access Invalid!');
class Aes{//密钥private $_secrect_key;public function __construct(){$this->_secrect_key = 'MYgGnQE2jDFADSFFDSEWsdD';}/*** 加密方法* @param string $str* @return string*/public function encrypt($str){//AES, 128 ECB模式加密数据$screct_key = $this->_secrect_key;$screct_key = base64_decode($screct_key);$str = trim($str);$str = $this->addPKCS7Padding($str);$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_ECB),MCRYPT_RAND);$encrypt_str =  mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $screct_key, $str, MCRYPT_MODE_ECB, $iv);return base64_encode($encrypt_str);}/*** 解密方法* @param string $str* @return string*/public function decrypt($str){//AES, 128 ECB模式加密数据$screct_key = $this->_secrect_key;$str = base64_decode($str);$screct_key = base64_decode($screct_key);$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_ECB),MCRYPT_RAND);$encrypt_str =  mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $screct_key, $str, MCRYPT_MODE_ECB, $iv);$encrypt_str = trim($encrypt_str);$encrypt_str = $this->stripPKSC7Padding($encrypt_str);return $encrypt_str;}/*** 填充算法* @param string $source* @return string*/function addPKCS7Padding($source){$source = trim($source);$block = mcrypt_get_block_size('rijndael-128', 'ecb');$pad = $block - (strlen($source) % $block);if ($pad <= $block) {$char = chr($pad);$source .= str_repeat($char, $pad);}return $source;}/*** 移去填充算法* @param string $source* @return string*/function stripPKSC7Padding($source){$source = trim($source);$char = substr($source, -1);$num = ord($char);if($num==62)return $source;$source = substr($source,0,-$num);return $source;}
}

如何联系我:【万里虎】www.bravetiger.cn 【QQ】3396726884 (咨询问题100元起,帮助解决问题500元起) 【博客】http://www.cnblogs.com/kenshinobiy/

PHP 标准AES加密算法类相关推荐

  1. cryptojs aes加密每次结果不同_Javascript加密算法标准库,支持Nodejs+浏览器——crypto-js...

    介绍 crypto-js是一个前端Javascript标准加密算法库,CryptoJS (crypto.js) 为 JavaScript 提供了各种各样的加密算法.有时候项目涉及到的敏感数据比较多,为 ...

  2. 高级加密标准 (AES) 和安全断言标记语言 (SAML) 的 Web 安全

    拥有更安全的渠道在整个网络上传输用户信息的最佳方法 下载源代码 - 1.1 MB 密码学 网络上的大多数问题都与安全问题以及在网络中保存和传输敏感数据有关.所以我们必须在它上面提供一个安全的系统.在网 ...

  3. 小编带你简单了解一下加密技术原理:AES加密标准

    随着因特网的发展,信息传输及存储的安全问题成为影响因特网应用发展的重要因素.信息安全技术也就成为了人们研究因特网应用的新热点. 信息安全的研究包括密码理论与技术.安全协议与技术.安全体系结构理论.信息 ...

  4. 什么标准规定了aes加密_高级加密标准(AES)分析

    原标题:高级加密标准(AES)分析 0×00 前言 在密码学中,block(分组)密码的工作模式被广泛使用,使用同一个分组密码密钥对很多称之为块的数据加密,在优于很多诸如RSA.ECC密码的性能的情况 ...

  5. 什么标准规定了aes加密_aes 128标准加密使用哪些字符

    AES算法基本知识 AES的全称是Advanced Encryption Standard,即高级加密标准.该项目由美国国家标准技术研究所(NIST)于1997年开始启动并征集算法,在2000年确定采 ...

  6. 探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!

    前言 对于数据加密和解密每次我都是从网上拷贝一份,无需有太多了解,由于在.net core中对加密和解密目前全部是统一了接口,只是做具体的实现,由于遇到过问题,所以将打算基本了解下其原理,知其然足矣, ...

  7. Java使用AES加密解密

    AES加密机制: 密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准. 这个标准用来替代原先的 ...

  8. AES加密解密算法Java实现

    AES加密算法是密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DE ...

  9. 使用Python3进行AES加密和解密 输入的数据

    高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES, ...

最新文章

  1. LeetCode简单题之数组中的字符串匹配
  2. Linux 性能測试工具
  3. 魔方机器人需要特制魔方吗_解魔方的机器人攻略18 – 魔方快速算法
  4. 常用的 16 个 Sublime Text 快捷键
  5. upload Fiori application to ABAP server via report /UI5/UI5_REPOSITORY_LOAD
  6. Hive 数据倾斜问题定位排查及解决(实战)
  7. 德勤元宇宙综观:愿景、技术和应对
  8. html用排序列表的方式添加,jQuery html表格排序插件tablesorter使用方法详解
  9. matlab创建一个简易的MP3播放器GUI程序
  10. 开课吧:C++基础之字符串匹配之BM算法(Boyer-Moore)
  11. node.js下mongoose简单操作实例
  12. java synchronized概念用法
  13. 【语音分离】基于matlab FASTICA语音分离【含Matlab源码 1023期】
  14. 马克思主义基本原理概论复习资料
  15. antd-select拼音首字母模糊查询
  16. 微信群发助手怎么使用?微信群发助手怎么发?
  17. 微信支付退款 升级版 【码云gvp 】
  18. C++逆序数(奇排列和偶排列的判定)
  19. 心态-《积极的力量》书中的精髓:如何保持积极乐观的心态,从而提升我们的幸福感?
  20. Flask懒加载时 moles.py 无法运行

热门文章

  1. ITK:将图像粘贴到另一个
  2. c++ assert()断言
  3. QT的QVarLengthArray类的使用
  4. QT的QSharedDataPointer类的使用
  5. QT的QReadLocker类的使用
  6. QT的QAudioOutput类的使用
  7. 经典C语言程序100例之六零
  8. native固定吸顶 react_React Native固定底部TextInput,解决键盘遮挡、列表滚动问题
  9. qaxobject控制word到某一行_Word操作技巧:快速选择文本的4种技能,提高你的工作效率...
  10. 使用opencv读取图片错误([ WARN:0@13.701] global D:\a\opencv-python\opencv-python\opencv\modules\imgcodecs\..)