PHP7实现和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】


Posted in PHP onJune 08, 2019

本文实例讲述了PHP7实现和CryptoJS的AES加密方式互通。分享给大家供大家参考,具体如下:

PHP类:

class AES
{
  /**
   *
   * @param string $string 需要加密的字符串
   * @param string $key 密钥
   * @return string
   */
  public static function encrypt($string, $key)
  {
    // openssl_encrypt 加密不同Mcrypt,对秘钥长度要求,超出16加密结果不变
    $data = openssl_encrypt($string, 'AES-128-ECB', $key, OPENSSL_RAW_DATA);
    return base64_encode($data);
  }
  /**
   * @param string $string 需要解密的字符串
   * @param string $key 密钥
   * @return string
   */
  public static function decrypt($string, $key)
  {
    return openssl_decrypt(base64_decode($string), 'AES-128-ECB', $key, OPENSSL_RAW_DATA);
  }
  /**
   * 获取秘钥
   * @return string
   */
  public static function getSecretKey()
  {
    $str='xxx';//生成16位的字符窜
    return $str;
  }
}

JS的写法:

<script type="text/javascript" src="./bower_components/crypto-js/crypto-js.js"></script>
<script type="text/javascript">
  AesKey = 'xxxxx';//加密时用的key,跟php一样
  message='xxxxxxx';//加密后的字符窜
  var ECBOptions = {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
  };
  var key = CryptoJS.enc.Utf8.parse(AesKey);
  var bytes = CryptoJS.AES.decrypt(message, key,ECBOptions);
  var originalText = bytes.toString(CryptoJS.enc.Utf8);
  console.log(originalText)
</script>
PHP 相关文章推荐
php 字符串函数收集
Mar 29 PHP
五款常用mysql slow log分析工具的比较分析
May 22 PHP
php二维数组排序详解
Nov 06 PHP
php ci框架中加载css和js文件失败的解决方法
Mar 03 PHP
PHP上传文件时自动分配路径的方法
Jan 09 PHP
php+html5使用FormData对象提交表单及上传图片的方法
Feb 11 PHP
PHP安全上传图片的方法
Mar 21 PHP
迪菲-赫尔曼密钥交换(Diffie?Hellman)算法原理和PHP实现版
May 12 PHP
反射调用private方法实践(php、java)
Dec 21 PHP
PHP Socket网络操作类定义与用法示例
Aug 30 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
Dec 07 PHP
对laravel in 查询的使用方法详解
Oct 09 PHP
php使用scandir()函数扫描指定目录下所有文件示例
Jun 08 #PHP
php中目录操作opendir()、readdir()及scandir()用法示例
Jun 08 #PHP
php中字符串和整数比较的操作方法
Jun 06 #PHP
使用PHPWord生成word文档的方法详解
Jun 06 #PHP
php/JS实现的生成随机密码(验证码)功能示例
Jun 06 #PHP
PHP实现的62进制转10进制,10进制转62进制函数示例
Jun 06 #PHP
PHP cookie,session的使用与用户自动登录功能实现方法分析
Jun 05 #PHP
You might like
Laravel框架执行原生SQL语句及使用paginate分页的方法
2018/08/17 PHP
Laravel5.1 框架路由基础详解
2020/01/04 PHP
利用javascript打开模态对话框(示例代码)
2014/01/11 Javascript
购物车选中得到价格实现示例
2014/01/26 Javascript
用javascript读取xml文件读取节点数据
2014/08/12 Javascript
JavaScript结合AJAX_stream实现流式显示
2015/01/08 Javascript
详解JavaScript中的blink()方法的使用
2015/06/08 Javascript
js/jq仿window文件夹框选操作插件
2017/03/08 Javascript
如何解决vue与传统jquery插件冲突
2017/03/20 Javascript
bootstrap警告框示例代码分享
2017/05/17 Javascript
BootStrap selectpicker后台动态绑定数据
2017/06/01 Javascript
JS表单提交验证、input(type=number) 去三角 刷新验证码
2017/06/21 Javascript
jQuery UI 实例讲解 - 日期选择器(Datepicker)
2017/09/18 jQuery
AngularJS实现的锚点楼层跳转功能示例
2018/01/02 Javascript
JS关于刷新页面的相关总结
2018/05/09 Javascript
使用vue-router完成简单导航功能【推荐】
2018/06/28 Javascript
create-react-app 修改为多入口编译的方法
2018/08/01 Javascript
vue自定义指令实现方法详解
2019/02/11 Javascript
vue多个元素的样式选择器问题
2019/11/29 Javascript
Python用list或dict字段模式读取文件的方法
2017/01/10 Python
python编程使用selenium模拟登陆淘宝实例代码
2018/01/25 Python
Python3+Selenium+Chrome实现自动填写WPS表单
2020/02/12 Python
jupyter notebook 的工作空间设置操作
2020/04/20 Python
python中关于数据类型的学习笔记
2020/07/19 Python
如何利用Python给自己的头像加一个小国旗(小月饼)
2020/10/02 Python
如何在scrapy中集成selenium爬取网页的方法
2020/11/18 Python
Expedia爱尔兰:酒店、机票、租车及廉价假期
2017/01/02 全球购物
美国在线眼镜商城:Eyeglasses.com
2017/06/26 全球购物
FC-Moto英国:欧洲最大的摩托车服装和头盔商店之一
2019/08/25 全球购物
中职生自荐信
2013/10/13 职场文书
党支部遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
2015年班级工作总结范文
2015/04/03 职场文书
2019大学竞选班长发言稿
2019/06/27 职场文书
解决jupyter notebook启动后没有token的坑
2021/04/24 Python
浅谈pytorch中stack和cat的及to_tensor的坑
2021/05/20 Python
如何在pycharm中快捷安装pip命令(如pygame)
2021/05/31 Python