折腾了一下午  从茫茫百度海里挣扎出来了

废话不多说

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加密之旅相关推荐

  1. Jeecg-Boot前后端分离,针对敏感数据,加密传递方案

    # 针对敏感数据,加密传递方案 第一步: 在vue页面引入aesEncrypt.js encryption方法.示例代码: import { encryption } from '@/utils/en ...

  2. rsa前后端加密流程_不懂前后端分离?这篇就够了

    一 传统的开发模式 前后端分离前我们的开发协作模式一般是这样的: 前端写好静态的HTML页面交付给后端开发.静态页面可以本地开发,也无需考虑业务逻辑只需要实现View即可. 后端使用模板引擎去套模板, ...

  3. [转] 前后端分离之JWT用户认证

    [From] http://www.jianshu.com/p/180a870a308a 在前后端分离开发时为什么需要用户认证呢?原因是由于HTTP协定是不储存状态的(stateless),这意味着当 ...

  4. 前后端分离之JWT用户认证

    前后端分离之JWT用户认证 在前后端分离开发时为什么需要用户认证呢?原因是由于HTTP协定是不储存状态的(stateless),这意味着当我们透过帐号密码验证一个使用者时,当下一个request请求时 ...

  5. springboot jwt token前后端分离_为什么要 前后端分离 ?

    作 者:互扯程序 来 源:互扯程序 广而告之:由于此订阅号换了个皮肤,系统自动取消了读者的公众号置顶.导致用户接受文章不及时.您可以打开订阅号,选择置顶(星标)公众号,重磅干货,第一时间送达! 本文知 ...

  6. 前后端分离session_前后端分离:基于JWT用户认证分析

    作者:lion1ou https://lion1ou.win/2017/01/18/ 在前后端分离开发时为什么需要用户认证呢?原因是由于HTTP协定是不储存状态的(stateless),这意味着当我们 ...

  7. 2021年数据库课设该怎么做?一个超市管理系统,简单的前后端分离项目,带你从概要设计走到项目发布!(Vue.js+SpringBoot+MybatisPlus)

    由于本文格式原来是word,所以文中有些格式不太对.如果这篇文章对你有帮助,麻烦点赞评论一下谢谢!源码和word文档可私聊领取~ 目录 一.相关技术介绍 1.1 RDBMS: 1.2应用程序开发环境: ...

  8. 基于 Vue+Spring 前后端分离管理系统ELAdmin

    前言 其实项目网上有很多了,但是教程比较详细的没多少,今天分享的项目从安装部署到代码具体功能都有很详细都说明 eladmin 是一款基于 Spring Boot 2.1.0 . Jpa. Spring ...

  9. springBoot整合spring security+JWT实现单点登录与权限管理前后端分离

    在前一篇文章当中,我们介绍了springBoot整合spring security单体应用版,在这篇文章当中,我将介绍springBoot整合spring secury+JWT实现单点登录与权限管理. ...

  10. springBoot整合spring security+JWT实现单点登录与权限管理前后端分离--筑基中期

    写在前面 在前一篇文章当中,我们介绍了springBoot整合spring security单体应用版,在这篇文章当中,我将介绍springBoot整合spring secury+JWT实现单点登录与 ...

最新文章

  1. ProxySQL 故障
  2. OracleOraDb11g_home1TNSListener服务启动立马自动关闭问题解决
  3. MySQL获取每个分类下面的前三条数据
  4. JavaScript实现http地址自动检测并添加URL链接
  5. python中单行注释采用的符号是什么_Python注释符号使用说明(多行注释和单行注释),用法,详解,攻略...
  6. IPC--进程间通信三(共享内存)
  7. Flask 发布 1.0 稳定版
  8. 2021-06-29操作DOM元素
  9. sirikit_iOS 12 Siri捷径SiriKit
  10. 利用PCL库做简单的三维立体图形
  11. Flink State 深度讲解
  12. “五小”成果技术报告 野外小队信息管理系统Ver1.00
  13. SpringBoot 实现国际化 SpringBoot配置国际化 SpringBoot 国际化 springboot实现国际化 springboot配置国际化 springboot国际化代码实现
  14. MobPush 创建推送
  15. winrar6.0汉化中文版 v6.00烈火版
  16. 2019 CCF-CCSP-苏州之旅
  17. 小红书-内卖秒杀项目总结
  18. Ubuntu16.04+win10+Fabric
  19. 计算机作品三等奖——飞翔吧,七彩的梦
  20. NetBox在Win10下运行报错

热门文章

  1. t检验怎么分析结果python_使用python 批量 配对t检验 医学 基础研究 数据分析
  2. sis最新ip地址2020入口一_【新版教材】2020最新人教版高中历史教材必修一电子课本...
  3. 9个GVP国产Java开源项目!是真滴哇塞
  4. 凯恩斯主义税收思想概述
  5. 基于遗传算法的神经网络,遗传算法训练神经网络
  6. 基于Hexo和GitHub搭建一个免费博客域名图文教学
  7. ISA防火墙之利用DHCP部署WPAD
  8. 将elf文件转换为bin文件
  9. mysql启动报错:由于找不到vcruntime140_1.dll,无法继续执行代码
  10. 漏洞修复:web应用服务器版本信息泄露