前端加密使用RSA+MD5+自写算法
使用到了 md5.js+jsencrypt.min.js+1.js+RSAUtils.java(自写算法)
下载链接:https://gitee.com/gy297879328/learning_summary/tree/master/jiami
使用:RSAUtils.java生成一堆密钥对 ( 公钥跟私钥)公钥放到前台 私钥放后台
中间使用JSON传输

前端

$.ajax({type:"POST",url:"#(path)/manager/login/submit?returnUrl="+returnUrl,data:{//u:账号//p:密码//v 验证码//returnurl 跳转的url"l":j(u,p,v,returnUrl)//加密参数  j方法在 1.js中},dataType:"JSON",success:function (data) {console.log(data);if(data.status=="success"){window.location.href="/";}}
});

1.js

## 1.js
function j(a,b,c,d) {var data = {};data["userCode"] = a;data["password"] = b;data["verifyCode"] = c;data["returnUrl"] = d;## s方法我放到了 md5.js中,自写算法也在里面嵌套这data["sign"] = s(a+b+c+d);var encrypt = new JSEncrypt();## 替换私钥encrypt.setPublicKey('MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgZsjUfBvYInbxhYFmp0wyGluPxJySfmXZ6fkOZw0WP6jiNnf8Kj6hdChaj5u+FihTZYSCL39+i+ME2Y2FHTVXVwxz4vBfTS+ePtQ1MY+zfmzSVhIAJ7UFTRj2hSwVG9Ic0+5W/VtYl4Q+EJhawdq9bLnXzjz+UIMRDd3w85bq5/k83oXgUz+BEL5DixyjR3eXXZ7gBqeGUOBZ7qQ3NaeWKDlKKMm6yl3F2uIoUiJ9jMtupvlZMoiWGOSTd/RqZSBjisp088MrzLS0sn2DpMguXTLEJQNyqDa6r233+6nHKGWlO+nLAEPiJ0ib5fEIKiOC6yT0uvgQFXLjlXzuc3VXQIDAQAB');return encrypt.encrypt(JSON.stringify(data));
}

后台

 //前台提交的加密字符串String encrypt = getPara("l");//获取私钥字符串String privateKey = PropKit.get("PrivateKey");String encryptStr="";try {//解密  RSAUtils在工具包里面有encryptStr = new String(RSAUtils.privateDecrypt(encrypt, privateKey));} catch (Exception e) {HashMap<String, Object> returnMap = new HashMap<>();returnMap.put("status", "false");returnMap.put("msg", "encrypt error");returnMap.put("returnUrl", "returnUrl");renderJson(returnMap);return;}HashMap<String, String> hashMap=JSON.parseObject(encryptStr, HashMap.class);String userCode = hashMap.get("userCode");String password = hashMap.get("password");String verifyCode = hashMap.get("verifyCode");String returnUrl= hashMap.get("returnUrl");//验证sign//EncryptUtil类 自写算法1.js的java版本 String sign= hashMap.get("sign");String s = Md5Kit.md5(EncryptUtil.pwd(userCode + password + verifyCode + returnUrl) + "sxjlrj");if(!sign.equals(s.toLowerCase())){//加密错误HashMap<String, Object> returnMap = new HashMap<>();returnMap.put("status", "false");returnMap.put("msg", "encrypt error");returnMap.put("returnUrl", "returnUrl");renderJson(returnMap);return;}

混淆

因为里面的js在前台是能看的 所以需要将自写的1.js代码 js混淆一下,建议采用以下 随便哪一种

方法1:https://www.jsjiami.com/混淆的地址

方法2:https://www.javascriptobfuscator.com/JavaScript-Obfuscator.aspx

将1.js代码混淆后 再替换放到js中就好了

了解

Javascript-obfuscator
官网:https://github.com/javascript-obfuscator/javascript-obfuscator
特点:开源,支持自定义混淆选项,支持上传JS在线混淆;混淆后的代码执行速度要慢15-80%(取决于混淆选项),并且混淆后的文件明显更大;强度高。
简介:JavaScript Obfuscator是一个免费但功能强大的JavaScript混淆器,其中包含多种自定义混淆功能,可为您的源代码提供保护。

Javascript Obfuscator
官网:https://javascriptobfuscator.com/
特点:强度高,支持自定义混淆选项,支持上传JS在线混淆,支持客户端桌面版GUI;免费版支持最大200kb的JS文件,且单次最多对20个JS文件进行混淆;付费版支持单次批量混淆50个JS文件,价格$19/month起。
简介:Javascript Obfuscator将JavaScript源代码转换为经过混淆且完全不可读的形式,从而防止对其进行分析和盗窃。它是100%安全的JavaScript压缩程序和最好的JavaScript压缩器。

JShaman
官网:http://www.jshaman.com/
特点:支持自定义混淆选项,支持在线加混淆;免费版支持试用10次高级特性,强度中;付费版支持50次代码混淆,价格¥16.9/年起。
简介:使用字符串阵列化、平展控制流、多态变异、僵尸函数等手段,使代码变的不可读不可分析,达到最终保护的目的,且不影响代码原有功能,是理想、实用的JS保护方案。JShaman采用的主要是代码混淆技术。

JSjiami
官网:https://www.jsjiami.com/
特点:支持在线加混淆;加密、混淆、压缩功能多合一;主要功能免费,混淆强度低,加密强度高;付费版支持单次批量混淆5个JS文件,价格¥88元/月起。
简介:这是对一个JS脚本进行混淆的在线工具,压缩体积较小,解密难度不难。如果运行不了,先使用eval压缩 后再使用,先加密再混淆效果最佳。站点的【JS最牛加密】功能兼容性适中,解密难度极大。

其他JS混淆工具
1.JSFuck:https://utf-8.jp/public/jsfuck.html
2.aaencode:https://utf-8.jp/public/aaencode.html
3.jjencode:https://utf-8.jp/public/jjencode.html
4.JScrambler(收费):https://jscrambler.com/
5.http://beautifytools.com/javascript-obfuscator.php
6.http://www.freejsobfuscator.com/
7.https://jsconfusion.supfree.net/
8.https://www.cleancss.com/javascript-obfuscate/index.php
9.https://www.jb51.net/tools/JShunxiao.htm
10.其他:搜索引擎关键词“JS混淆”/“JS Obfuscate”。

java 登录数据前端加密+后台验证RSA相关推荐

  1. java实现数据AES加密

    1.AES加密 AES是美国国家标准技术研究所NIST旨在取代DES的21世纪的加密标准. AES是基于数据块的加密方式,也就是说,每次处理的数据是一块(16字节),当数据不是16字节的倍数时填充,这 ...

  2. java oracle数据备份_Java后台备份oracle数据库脚本

    package atest; import java.io.BufferedReader; import java.io.File; import java.io.IOException; impor ...

  3. 处理登录问题遇到的后台数据未定义问题

    在处理登录问题 引入后台书注册的数据 ajax以及后台验证都没有问题的情况下 ,但是登录页面显示 userinfo没有定义的原因(即后台定义的数据前台 不显示或者前台拿不到后台的数据) 原因如下: 在 ...

  4. PHP密码问题陈婷代码_登录中利用JS前端加密PHP后端解密保证数据非明文传输的安全方法...

    为什么要研究这个呢,因为我所在单位的信息管理部门在监控系统上发现有大量的明文账号(身份证号)和密码在传输,被告知这很不安全,索性就直接解决这个问题,利用JS前端加密PHP后端再加密来解决这个问题,保证 ...

  5. rsa php前台加密后台解密源码,使用RSA实现前端公钥加密后端私钥解密

    项目中在用户登录时需要进行用户名和密码加密,这里选用了RSA非对称加密的方式. 公钥私钥:OpenSSL的公钥私钥(Node crypto模块限制) 前端: jsencrypt库加密 后端: Node ...

  6. 开放原子训练营(第一季)铜锁探密:基于铜锁,在前端对登录密码进行加密,实现隐私数据保密性

    本文将基于 铜锁(tongsuo)开源基础密码库实现前端对用户登录密码的加密,从而实现前端隐私数据的保密性. 首先,铜锁密码库是一个提供现代密码学算法和安全通信协议的开源基础密码库,在中国商用密码算法 ...

  7. 国密SM2前端加密,Java后台解密问题

    背景:要实现请求参数加密的功能,使用的是国密SM2算法,前端向后台发送请求获取公钥,将请求加密发送到后台,后台用对应的私钥进行解密 问题:前端进行加密的请求,后台无法进行解析 解决方案:(此处所用的类 ...

  8. 技能学习:学习使用php(tp6框架) + vue.js,开发前端全栈网站-5.用户登录,密码的bcrypt(hash)加密与验证

    技能学习:学习使用php(tp6框架) + vue.js,开发前端全栈网站-5.用户登录,密码的bcrypt(hash)加密与验证 技能学习:学习使用php(tp6框架) + vue.js,开发前端全 ...

  9. 国密SM2的前端加密,后端解密(Java版本)及SM3 摘要加密

    一.简介 国密即国家密码局认定的国产密码算法.常用的主要有SM2,SM3,SM4. SM2:椭圆曲线公钥密码算法是我国自主设计的公钥密码算法,为非对称加密,基于ECC.该算法已公开.由于该算法基于EC ...

最新文章

  1. 苹果智能音箱HomePod确定开售时间,权威人士质疑:是否太晚?
  2. performActionForShortcutItem方法未触发
  3. eltable 无数据文案修改_有哪些适合十二月发的文艺文案?记录文案用这款图片便签...
  4. ffmpeg为AVPacket添加解码头信息
  5. [No000017F]如何监控注册表的修改
  6. json spr路驾驶技术视频api_每天弄个小爬取之Python爬取批量爬取B站小视频
  7. Qt 加载QML 文件的几种方式
  8. el-drawer点击的时候为什么有边框_别再纠结背景墙边框的材料,这4种线条边框便宜又实用,简洁大方...
  9. Java实现CSV读写操作源代码
  10. [置顶] UDP协议---心德(1)
  11. java class load 类加载
  12. storm计数器(小白看懂系列)
  13. Intel安装框架爆出带本地提权的任意代码执行漏洞CVE-2017-5688
  14. Android 自动判断是电话,网址,EMAIL方法之Linkify
  15. 面试常问点:深入剖析JVM的那些事
  16. 镜头像差之二——色差
  17. 北通G3游戏手柄开箱体验,原来手游高手都是这么成就的
  18. 几种ARM编译器及IDE开发环境
  19. 阿里的坦克 拼多多的梨子
  20. What does assigning ‘shift‘ to a variable mean?

热门文章

  1. C语言结构-演员请就位
  2. linux 同步 多终端,Linux系统如何实现不同终端间的同步
  3. 不能卸载java_无法卸载注入的DLL
  4. S2SH框架入门之使用struts2
  5. .net使用SqlBulkCopy类操作DataTable批量插入数据库数据,然后分页查询坑
  6. Android 圆形/圆角图片的方法
  7. 深入了解UIAutomation 的API
  8. Druid:一个用于大数据实时处理的开源分布式系统
  9. ffmpeg 0.8.11 VC编译的SDK已经发布
  10. Random方法:生成指定长度的随机数字