因项目需求,需要一些敏感信息进行加密,不能以明文暴露到浏览器。

然后后台进行解密操作 先看一下效果图

未对其加密传输

1.前台JS

  1. <script type="text/javascript">
  2. $(function() {
  3. $("#btn").click(function() {
  4. var username = encode64($("#username").val());  //对数据加密
  5. var password = encode64($("#password").val());
  6. $("#username").val(username);
  7. $("#password").val(password);
  8. document.fm.submit();  //fm为form表单name
  9. })
  10. })
  11. // base64加密开始
  12. var keyStr = "ABCDEFGHIJKLMNOP" + "QRSTUVWXYZabcdef" + "ghijklmnopqrstuv"
  13. + "wxyz0123456789+/" + "=";
  14. function encode64(input) {
  15. var output = "";
  16. var chr1, chr2, chr3 = "";
  17. var enc1, enc2, enc3, enc4 = "";
  18. var i = 0;
  19. do {
  20. chr1 = input.charCodeAt(i++);
  21. chr2 = input.charCodeAt(i++);
  22. chr3 = input.charCodeAt(i++);
  23. enc1 = chr1 >> 2;
  24. enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
  25. enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
  26. enc4 = chr3 & 63;
  27. if (isNaN(chr2)) {
  28. enc3 = enc4 = 64;
  29. } else if (isNaN(chr3)) {
  30. enc4 = 64;
  31. }
  32. output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2)
  33. + keyStr.charAt(enc3) + keyStr.charAt(enc4);
  34. chr1 = chr2 = chr3 = "";
  35. enc1 = enc2 = enc3 = enc4 = "";
  36. } while (i < input.length);
  37. return output;
  38. }
  39. // base64加密结束
  40. </script>

2、后台java代码

  1. private static char[] base64EncodeChars = new char[] { 'A', 'B', 'C', 'D',
  2. 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q',
  3. 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd',
  4. 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q',
  5. 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3',
  6. '4', '5', '6', '7', '8', '9', '+', '/', };
  7. private static byte[] base64DecodeChars = new byte[] { -1, -1, -1, -1, -1,
  8. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  9. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  10. -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59,
  11. 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
  12. 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1,
  13. -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
  14. 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1,
  15. -1, -1 };
  16. /**
  17. * 解密
  18. * @param str
  19. * @return
  20. */
  21. public static byte[] decode(String str) {
  22. byte[] data = str.getBytes();
  23. int len = data.length;
  24. ByteArrayOutputStream buf = new ByteArrayOutputStream(len);
  25. int i = 0;
  26. int b1, b2, b3, b4;
  27. while (i < len) {
  28. do {
  29. b1 = base64DecodeChars[data[i++]];
  30. } while (i < len && b1 == -1);
  31. if (b1 == -1) {
  32. break;
  33. }
  34. do {
  35. b2 = base64DecodeChars[data[i++]];
  36. } while (i < len && b2 == -1);
  37. if (b2 == -1) {
  38. break;
  39. }
  40. buf.write((int) ((b1 << 2) | ((b2 & 0x30) >>> 4)));
  41. do {
  42. b3 = data[i++];
  43. if (b3 == 61) {
  44. return buf.toByteArray();
  45. }
  46. b3 = base64DecodeChars[b3];
  47. } while (i < len && b3 == -1);
  48. if (b3 == -1) {
  49. break;
  50. }
  51. buf.write((int) (((b2 & 0x0f) << 4) | ((b3 & 0x3c) >>> 2)));
  52. do {
  53. b4 = data[i++];
  54. if (b4 == 61) {
  55. return buf.toByteArray();
  56. }
  57. b4 = base64DecodeChars[b4];
  58. } while (i < len && b4 == -1);
  59. if (b4 == -1) {
  60. break;
  61. }
  62. buf.write((int) (((b3 & 0x03) << 6) | b4));
  63. }
  64. return buf.toByteArray();
  65. }

System.out.println(new String(decode(username)));  // 使用decode()方法进行解密

Java加密算法还包括如下:

MD5(Message Digest algorithm 5,信息摘要算法)

SHA(Secure Hash Algorithm,安全散列算法)

HMAC(Hash Message Authentication Code,散列消息鉴别码)

待有时间研究这些复杂的高级加密算法

作者:itmyhome

源码:download

【转】JS前台加密,java后台解密实现的更多相关文章

  1. rsa实现js前台加密java后台解密

    前段时间写了一个rsa前台加密到后台用java解密,下面共享下实现思路: 准备工作:第三方包是必须的 bcprov-jdk15on-148.jar commons-codec-1.7.jar comm ...

  2. 明文暴露___JS前台加密,java后台解密实现

    1.前台JS <script type="text/javascript"> $(function() { $("#btn").click(func ...

  3. js base64加密,后台解密

    这是为了解决页面发送post请求,传输密码,在页面的控制台可以看到密码的明文,所以先用base64把要传输的密码转换为非明文,然后在后台解密处理. base64encode.js // base64加 ...

  4. RSA 前段加密 java 后台解密 已调试通过

    本人整理网上的.好多网上的调不通.在这里把调试好的贴出来. 1.   异步获取公钥(后台获取):你也可以将公钥串写在页面上: var publicKey = null; $.ajax({ url: c ...

  5. JS前端加密JAVA后端解密详解

    最近有一个加解密的需求,其实没有什么难度,但是实践过程中踩了很多坑,把踩坑过程分享出来. 1.前端JS加密 /** * 加密(需要先加载aes.min.js文件) * @param word * @r ...

  6. js前台加密,java后台解密实现

    参考资料: JS前台加密,java后台解密实现

  7. JS base64 加密和 后台 base64解密(防止中文乱码)

    直接上代码 1,js(2个文件,网上找的)  不要觉的长,直接复制下来就OK //UnicodeAnsi.js文件 //把Unicode转成Ansi和把Ansi转换成Unicode function ...

  8. 使用CEfSharp之旅(2) js前台事件执行后台方法

    原文:使用CEfSharp之旅(2) js前台事件执行后台方法 版权声明:本文为博主原创文章,未经博主允许不得转载.可点击关注博主 ,不明白的进群191065815 我的群里问 https://blo ...

  9. js前台加密,java后端解密

    1.前台JS <script type="text/javascript">        $(function() {                $(" ...

随机推荐

  1. 网易云安全DDoS高防全新上线 ,游戏防护实力领先

    本文由  网易云发布.       10月24日,网易云安全(易盾)正式上线DDoS高防解决方案[点击查看].基于网易20年网络安全防护经验,网易云安全(易盾)DDoS高防可提供1T超大防护带宽,拥有 ...

  2. 简单版nginx lua 完成流量上报于中间件

    本文链接:https://www.cnblogs.com/zhenghongxin/p/9131226.html 公司某些业务下,需要将请求的流量上报于中间件(kafka,rabbitMq等),让st ...

  3. flask源码解析之上下文为什么用栈

    楔子 我在之前的文章<flask源码解析之上下文>中对flask上下文流程进行了详细的说明,但是在学习的过程中我一直在思考flask上下文中为什么要使用栈完成对请求上下文和应用上下文的入栈 ...

  4. sql盲注之报错注入(附自动化脚本)

    作者:__LSA__ 0x00 概述 渗透的时候总会首先测试注入,sql注入可以说是web漏洞界的Boss了,稳居owasp第一位,普通的直接回显数据的注入现在几乎绝迹了,绝大多数都是盲注了,此文是盲 ...

  5. svn update 产生Node remains in conflict的问题

    输入:sudo svn revert --depth=infinity frontend/web/js/workplace/organization.js 最后在执行 svn  up  就ok了

  6. webpack快速入门——配置JS压缩,打包

    1 .首先在webpack.config.js中引入 const uglify = require('uglifyjs-webpack-plugin'); 2.然后在plugins配置里 plugin ...

  7. Linux命令学习与使用2

    1.Ctrl+a:跳到命令行首 Ctrl+E: 跳到命令行尾 Ctrl+L:清屏2.切换用户 su - 用户名3.更换yum镜像源 1.进入/etc/yum.repos.d 备份CentOS-Base ...

  8. jvm高级特性(1)(内存泄漏实例)

    jvm内存结构回顾: .8同1.7比,最大的差别就是:元数据区取代了永久代.元空间的本质和永久代类似,都是对JVM规范中方法区的实现. 不过元空间与永久代之间最大的区别在于:元数据空间并不在虚拟机中, ...

  9. centos7无法上网问题

    在虚拟机VM中安装了centos7,无法上网,在同一个虚拟机里,也安装了Ubuntu是可以上网的,不知道咋回事,所以上网查了资料博客,现总结如下. 一.首先打开虚拟的设置,可以看到虚拟机网络的设置默认 ...

  10. 在vue项目中安装使用Mint-UI

    一.Mint UI 是 由饿了么前端团队推出的 一个基于 Vue.js 的移动端组件库,具有以下特性:       使用文档: http://mint-ui.github.io/#!/zh-cn Mi ...