Js通过AES加密后PHP用Openssl解密的方法

 更新时间:2019年07月12日 09:31:42   作者:xialeistudio   我要评论

这篇文章主要给大家介绍了关于Js如何通过AES加密后PHP利用Openssl解密的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

前言

最近遇到的几个网站在提交密码时提交的已经是密文,也就是说在网络上传输的密码是密文,这样提升了密码在网络传输中的安全性。

后端语言加解密已经有很成熟的方案了,前端的话Google之前出过一个crypto-js,为浏览器的js提供了加解密方案。今天一起来了解一下基于AES的前后端加解密流程。

Javascript

1、安装npm包 npm install crypto-js

2、加密代码

const CryptoJS = require("crypto-js");
const key = CryptoJS.enc.Latin1.parse('1234567812345678');
const iv = CryptoJS.enc.Latin1.parse('1234567812345678');
const encoded = CryptoJS.AES.encrypt('hahaha', key, {
 iv: iv,
 mode: CryptoJS.mode.CBC,
 adding: CryptoJS.pad.ZeroPadding
}).toString()
console.log('encoded', encoded)

3、解密代码

const key = CryptoJS.enc.Latin1.parse('123456781234567812345678');
const iv = CryptoJS.enc.Latin1.parse('1234567812345678');
const decoded = CryptoJS.AES.decrypt(encoded, key, {
 iv: iv,
 mode: CryptoJS.mode.CBC,
 adding: CryptoJS.pad.ZeroPadding
}).toString(CryptoJS.enc.Utf8)
console.log('decoded', decoded);

4、输出如下

encoded 6bcgYd4f4ZgNOQH/3tqMpg==
decoded hahaha

PHP

直接使用openssl解密即可,代码如下:

$encoded = '6bcgYd4f4ZgNOQH/3tqMpg==';
$key = '123456781234567812345678';
$iv = '1234567812345678';
var_dump(openssl_decrypt($encoded, 'AES-192-CBC', $key, 0,$iv));

输出结果:

string(6) "hahaha"

注意事项

1、AES加密位数跟密钥key有关, 以下是密钥位数和加密对应关系

  • 16 => AES-128
  • 24 => AES-192
  • 32 => AES-256

2、iv是初始化向量. 超过16字节或者不足16字节都会被补足16字节或者截断到16字节。由于AES是块加密,铭文被分割成固定长度的块(一般是16字节长度),所以iv也是16字节。

3、CBC是加密模式

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对澳门金沙网上娱乐的支持。

相关文章

  • JavaScript 性能优化小结

    JavaScript 性能优化小结

    这篇文章主要介绍了JavaScript 性能优化小结的相关资料,需要的朋友可以参考下
    2015-10-10
  • 微信小程序云开发 生成带参小程序码流程

    微信小程序云开发 生成带参小程序码流程

    这篇文章主要为大家详细介绍了微信小程序云开发,生成带参小程序码,云函数网络请求,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • webpack中使用iconfont字体图标的方法

    webpack中使用iconfont字体图标的方法

    下面小编就为大家分享一篇webpack中使用iconfont字体图标的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • 微信小程序去哪里找 小程序到底如何使用(附小程序名单)

    微信小程序去哪里找 小程序到底如何使用(附小程序名单)

    今天凌晨,微信负责人张小龙在微信朋友圈晒出了一组图,网友看到纷纷“炸裂”,这到底是什么?是的,微信小程序如约上线,微信小程序怎么打开,微信小程序在哪里进入,请阅读本文
    2017-01-01
  • Bootstrap按钮组件详解

    Bootstrap按钮组件详解

    按钮组和下拉菜单组件一样,需要依赖于button.js插件才能正常运作。通过本文给大家详细介绍Bootstrap按钮组件,感兴趣的朋友一起学习吧
    2016-04-04
  • 详解js模板引擎art template数组渲染的方法

    详解js模板引擎art template数组渲染的方法

    art-template 是一个简约、超快的模板引擎。这篇文章主要介绍了详解js模板引擎art template数组渲染的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • js判断为空Null与字符串为空简写方法

    js判断为空Null与字符串为空简写方法

    最近开始研究JavaScript的简写方法,下面就是有关判断为空的简写方法
    2014-02-02
  • javascript数组去重方法汇总

    javascript数组去重方法汇总

    数组去重复是一个常见的需求,我们暂时考虑同类型的数组去重复。主要是理清思路和考虑下性能。以下方法,网上基本都有,这里只是简单地总结一下。
    2015-04-04
  • JS简单去除数组中重复项的方法

    JS简单去除数组中重复项的方法

    这篇文章主要介绍了JS简单去除数组中重复项的方法,涉及javascript针对数组的遍历、判断与运算相关操作技巧,需要的朋友可以参考下
    2016-09-09
  • js获取url传值的方法

    js获取url传值的方法

    这篇文章主要介绍了js获取url传值的方法,实例分析了字符串分割与正则分析两种方法,并补充了一个基于正则匹配实现的js获取url的get传值函数,需要的朋友可以参考下
    2015-12-12

最新评论