php 前后端分离之rsa与des加密之旅
折腾了一下午 从茫茫百度海里挣扎出来了
废话不多说
RSA 非对称加密效率较低 而且对长度有限制 数据量大的建议不要使用
首先去http://web.chacuo.net/netrsakeypair生成一套公私钥
前端下载 jsencrypt.js (我这里用的是2.3.0)
使用起来也非常简单
let encryptor = new JSEncrypt() // 新建JSEncrypt对象let publicKey = '-----BEGIN PUBLIC KEY-----'+'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3Nbnoq928KIrZ989fuyQ1ld2p'+'m1wO8sFmJmGJwpuZ6FKQNJUnSYEEbMhvfoC9zccMQjp7EqmveIixuvTZ54xb4OgS'+'qcMTtCv+7W+0h666z8PVOD/j3b3WVhktfsgQtyZShl98f1P5sVSJWVUQRZk+j0YX'+'hc66xqNTW9bliJ8+oQIDAQAB'+'-----END PUBLIC KEY-----'';encryptor.setPublicKey(publicKey) // 设置公钥encryptor.encrypt('需要加密的数据');
后台加密
//加密openssl_public_encrypt('需要加密的数据',$encAesKey,'公钥');
$encAesKey 就是加密后的数据//解密
$pi_key = openssl_pkey_get_private('放上刚刚生成的私钥');//这个函数可用来判断私钥是否是可用的,可用返回资源id Resource id
$de_crypted = openssl_private_decrypt(base64_decode('需要解密的数据'),$decrypted,$pi_key);return json_encode(['code' => 0 , 'data' => $decrypted]);
--------------------------------------------------------------------分割线----------------------------------------------------
接下来是des加解密
前端需要下载两个js文件分别是
crypto-roll.js 和 crypto.js 注意 : 顺序不能反了 参数key与iv(必须要16位字符) 前后台要一致
//加密function encrypt(str, key, iv) {var encode_str = '';key = CryptoJS.MD5(key).toString();iv = CryptoJS.MD5(iv).toString();var crypto_key = CryptoJS.enc.Utf8.parse(key);var crypto_iv = CryptoJS.enc.Utf8.parse(iv.substr(0, 8));if (typeof (word) == 'string') {encode_str = CryptoJS.TripleDES.encrypt(str, crypto_key, {iv: crypto_iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7});} else {encode_str = CryptoJS.TripleDES.encrypt(JSON.stringify(str), crypto_key, {iv: crypto_iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7});}return encode_str.toString();}//解密function decrypt(str, key, iv) {key = CryptoJS.MD5(key).toString();iv = CryptoJS.MD5(iv).toString();var crypto_key = CryptoJS.enc.Utf8.parse(key);var crypto_iv = CryptoJS.enc.Utf8.parse(iv.substr(0, 8));var decrypt_str = CryptoJS.TripleDES.decrypt(str, crypto_key, {iv: crypto_iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7});return decrypt_str.toString(CryptoJS.enc.Utf8);}
后台代码
/*** name des加解密* Class Des*/
class Des
{/*** @param $data* @param $key* @param $iv* @return false|string*/public static function decrypt($data, $key, $iv){$data = base64_decode($data);$key = md5($key);$iv = substr(md5($iv), 0, 8); //取前8位$decrypted = openssl_decrypt($data, 'des-ede3-cbc', $key, OPENSSL_RAW_DATA, $iv);return $decrypted;}/*** @param $str* @param $key* @param $iv* @return string*/public static function encrypt($str, $key, $iv){$key = md5($key);$iv = substr(md5($iv), 0, 8); //取前8位$data = base64_encode(openssl_encrypt($str, 'des-ede3-cbc', $key, OPENSSL_RAW_DATA, $iv));return $data;}
php 前后端分离之rsa与des加密之旅相关推荐
- Jeecg-Boot前后端分离,针对敏感数据,加密传递方案
# 针对敏感数据,加密传递方案 第一步: 在vue页面引入aesEncrypt.js encryption方法.示例代码: import { encryption } from '@/utils/en ...
- rsa前后端加密流程_不懂前后端分离?这篇就够了
一 传统的开发模式 前后端分离前我们的开发协作模式一般是这样的: 前端写好静态的HTML页面交付给后端开发.静态页面可以本地开发,也无需考虑业务逻辑只需要实现View即可. 后端使用模板引擎去套模板, ...
- [转] 前后端分离之JWT用户认证
[From] http://www.jianshu.com/p/180a870a308a 在前后端分离开发时为什么需要用户认证呢?原因是由于HTTP协定是不储存状态的(stateless),这意味着当 ...
- 前后端分离之JWT用户认证
前后端分离之JWT用户认证 在前后端分离开发时为什么需要用户认证呢?原因是由于HTTP协定是不储存状态的(stateless),这意味着当我们透过帐号密码验证一个使用者时,当下一个request请求时 ...
- springboot jwt token前后端分离_为什么要 前后端分离 ?
作 者:互扯程序 来 源:互扯程序 广而告之:由于此订阅号换了个皮肤,系统自动取消了读者的公众号置顶.导致用户接受文章不及时.您可以打开订阅号,选择置顶(星标)公众号,重磅干货,第一时间送达! 本文知 ...
- 前后端分离session_前后端分离:基于JWT用户认证分析
作者:lion1ou https://lion1ou.win/2017/01/18/ 在前后端分离开发时为什么需要用户认证呢?原因是由于HTTP协定是不储存状态的(stateless),这意味着当我们 ...
- 2021年数据库课设该怎么做?一个超市管理系统,简单的前后端分离项目,带你从概要设计走到项目发布!(Vue.js+SpringBoot+MybatisPlus)
由于本文格式原来是word,所以文中有些格式不太对.如果这篇文章对你有帮助,麻烦点赞评论一下谢谢!源码和word文档可私聊领取~ 目录 一.相关技术介绍 1.1 RDBMS: 1.2应用程序开发环境: ...
- 基于 Vue+Spring 前后端分离管理系统ELAdmin
前言 其实项目网上有很多了,但是教程比较详细的没多少,今天分享的项目从安装部署到代码具体功能都有很详细都说明 eladmin 是一款基于 Spring Boot 2.1.0 . Jpa. Spring ...
- springBoot整合spring security+JWT实现单点登录与权限管理前后端分离
在前一篇文章当中,我们介绍了springBoot整合spring security单体应用版,在这篇文章当中,我将介绍springBoot整合spring secury+JWT实现单点登录与权限管理. ...
- springBoot整合spring security+JWT实现单点登录与权限管理前后端分离--筑基中期
写在前面 在前一篇文章当中,我们介绍了springBoot整合spring security单体应用版,在这篇文章当中,我将介绍springBoot整合spring secury+JWT实现单点登录与 ...
最新文章
- ProxySQL 故障
- OracleOraDb11g_home1TNSListener服务启动立马自动关闭问题解决
- MySQL获取每个分类下面的前三条数据
- JavaScript实现http地址自动检测并添加URL链接
- python中单行注释采用的符号是什么_Python注释符号使用说明(多行注释和单行注释),用法,详解,攻略...
- IPC--进程间通信三(共享内存)
- Flask 发布 1.0 稳定版
- 2021-06-29操作DOM元素
- sirikit_iOS 12 Siri捷径SiriKit
- 利用PCL库做简单的三维立体图形
- Flink State 深度讲解
- “五小”成果技术报告 野外小队信息管理系统Ver1.00
- SpringBoot 实现国际化 SpringBoot配置国际化 SpringBoot 国际化 springboot实现国际化 springboot配置国际化 springboot国际化代码实现
- MobPush 创建推送
- winrar6.0汉化中文版 v6.00烈火版
- 2019 CCF-CCSP-苏州之旅
- 小红书-内卖秒杀项目总结
- Ubuntu16.04+win10+Fabric
- 计算机作品三等奖——飞翔吧,七彩的梦
- NetBox在Win10下运行报错
热门文章
- t检验怎么分析结果python_使用python 批量 配对t检验 医学 基础研究 数据分析
- sis最新ip地址2020入口一_【新版教材】2020最新人教版高中历史教材必修一电子课本...
- 9个GVP国产Java开源项目!是真滴哇塞
- 凯恩斯主义税收思想概述
- 基于遗传算法的神经网络,遗传算法训练神经网络
- 基于Hexo和GitHub搭建一个免费博客域名图文教学
- ISA防火墙之利用DHCP部署WPAD
- 将elf文件转换为bin文件
- mysql启动报错:由于找不到vcruntime140_1.dll,无法继续执行代码
- 漏洞修复:web应用服务器版本信息泄露