侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

PHP实现AES256加密算法实例

php  /  管理员 发布于 7年前   317

本文实例讲述了PHP实现AES256加密算法的方法,是较为常见的一种加密算法。分享给大家供大家参考。具体如下:

aes.class.php文件如下:

 6 && $i%$Nk == 4) {     $temp = self::subWord($temp);    }    for ($t=0; $t<4; $t++) $w[$i][$t] = $w[$i-$Nk][$t] ^ $temp[$t];   }   return $w;  }    private static function subWord($w) {  // apply SBox to 4-byte word w   for ($i=0; $i<4; $i++) $w[$i] = self::$sBox[$w[$i]];   return $w;  }    private static function rotWord($w) {  // rotate 4-byte word w left by one byte   $tmp = $w[0];   for ($i=0; $i<3; $i++) $w[$i] = $w[$i+1];   $w[3] = $tmp;   return $w;  }    // sBox is pre-computed multiplicative inverse in GF(2^8) used in subBytes and keyExpansion [§5.1.1]  private static $sBox = array(   0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5,0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76,   0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0,0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0,   0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc,0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15,   0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a,0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75,   0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0,0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84,   0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b,0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf,   0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85,0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8,   0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5,0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2,   0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17,0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73,   0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88,0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb,   0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c,0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79,   0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9,0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08,   0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6,0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a,   0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e,0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e,   0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94,0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf,   0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68,0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16);    // rCon is Round Constant used for the Key Expansion [1st col is 2^(r-1) in GF(2^8)] [§5.2]  private static $rCon = array(    array(0x00, 0x00, 0x00, 0x00),   array(0x01, 0x00, 0x00, 0x00),   array(0x02, 0x00, 0x00, 0x00),   array(0x04, 0x00, 0x00, 0x00),   array(0x08, 0x00, 0x00, 0x00),   array(0x10, 0x00, 0x00, 0x00),   array(0x20, 0x00, 0x00, 0x00),   array(0x40, 0x00, 0x00, 0x00),   array(0x80, 0x00, 0x00, 0x00),   array(0x1b, 0x00, 0x00, 0x00),   array(0x36, 0x00, 0x00, 0x00) );  }  ?>

aesctr.class.php文件如下:

>> operator nor unsigned ints   *   * @param a number to be shifted (32-bit integer)   * @param b number of bits to shift a to the right (0..31)   * @return  a right-shifted and zero-filled by b bits   */  private static function urs($a, $b) {   $a &= 0xffffffff; $b &= 0x1f; // (bounds check)   if ($a&0x80000000 && $b>0) {  // if left-most bit set    $a = ($a>>1) & 0x7fffffff;  //  right-shift one bit & clear left-most bit    $a = $a >> ($b-1);      //  remaining right-shifts   } else {// otherwise    $a = ($a>>$b);        //  use normal right-shift   }    return $a;   } }  ?>

Demo实例程序如下:

';  $mstr = AesCtr::encrypt('Hello World', 'key', 256); echo "Encrypt String : $mstr
"; $dstr = AesCtr::decrypt($mstr, 'key', 256); echo "Decrypt String : $dstr
"; echo 'each not change
'; $mstr = AesCtr::encrypt('Hello World', 'key', 256, 1); // keep=1 echo "Encrypt String : $mstr
"; $dstr = AesCtr::decrypt($mstr, 'key', 256); echo "Decrypt String : $dstr
"; ?>

这里再介绍另一使用 PHP mcrypt 加解密方法:

/* aes 256 encrypt * @param String $ostr * @param String $securekey * @param String $type encrypt, decrypt */ function aes($ostr, $securekey, $type='encrypt'){   if($ostr==''){     return '';   }      $key = $securekey;   $iv = strrev($securekey);   $td = mcrypt_module_open('rijndael-256', '', 'ofb', '');   mcrypt_generic_init($td, $key, $iv);    $str = '';    switch($type){     case 'encrypt':       $str = base64_encode(mcrypt_generic($td, $ostr));       break;      case 'decrypt':       $str = mdecrypt_generic($td, base64_decode($ostr));       break;   }    mcrypt_generic_deinit($td);    return $str; }  // Demo $key = "fdipzone201314showmethemoney!@#$"; $str = "show me the money";  $ostr = aes($str, $key); echo "String 1: $ostr
"; $dstr = aes($ostr, $key, 'decrypt'); echo "String 2: $dstr
";

希望本文所述对大家php程序设计的学习有所帮助。

您可能感兴趣的文章:

  • PHP的AES加密算法完整实例
  • PHP对称加密算法(DES/AES)类的实现代码
  • 标准PHP的AES加密算法类
  • php中AES加密解密的例子小结
  • PHP实现的AES双向加密解密功能示例【128位】
  • PHP7.1实现的AES与RSA加密操作示例
  • PHP7实现和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】
  • php实现的AES加密类定义与用法示例
  • PHP扩展mcrypt实现的AES加密功能示例
  • PHP实现的AES 128位加密算法示例


  • 上一条:
    php实现的发送带附件邮件类实例
    下一条:
    php生成QRcode实例
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 用Time Warden监控PHP中的代码处理时间(0个评论)
    • 在PHP中使用array_pop + yield实现读取超大型目录功能示例(0个评论)
    • Property Hooks RFC在PHP 8.4中越来越接近现实(0个评论)
    • 近期文章
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-06
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-11
    • 2017-12
    • 2018-01
    • 2018-02
    • 2018-03
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-09
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    • 2024-05
    • 2024-06
    • 2024-07
    • 2024-09
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客