前后台数据传输问题----AES加密,前台JS加密,后台JAVA解密。
一、JS中加密(解密)数据,采用的是谷歌的CryptoJS静态件
链接: https://pan.baidu.com/s/1l5pHY4g45zzL85dDs8M82Q
(如果CSDN无法直接跳转,建议使用浏览器进行访问)
提取码:4v6p
- jsp页面需要引入两个js,一个是加密的规则,另一个是加密的算法。(注意引入的顺序)
<script type="text/javascript" src="ace.js"></script> <script type="text/javascript" src="mode-ecb.js"></script>
js加密实现
//word为需要加密的String字符 function encrypt(word){//密钥--应和后台java解密或是前台js解密的密钥保持一致(16进制)var key = CryptoJS.enc.Utf8.parse("1111wwww2222uuuu"); //偏移量var srcs = CryptoJS.enc.Utf8.parse(word); //算法var encrypted = CryptoJS.AES.encrypt(srcs, key, {mode:CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7}); //替换--防止值为“1”的情况var reg = new RegExp('/',"g");return encrypted.toString().replace(reg,"#"); }
- js解密实现
function decrypt(word){ var key = CryptoJS.enc.Utf8.parse("1111wwww2222uuuu"); var decrypt = CryptoJS.AES.decrypt(word, key, {mode:CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7}); return CryptoJS.enc.Utf8.stringify(decrypt).toString(); }
二、java中解密(加密)数据实现
- 创建加密工具类
package com.sinosoft.utility;import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.spec.SecretKeySpec;import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang3.StringUtils;import sun.misc.BASE64Decoder;/*** 加密工具类 实现aes加密、解密*/ @SuppressWarnings("restriction") public class AesUtil {//密钥(16进制,和前台保持一致,或者是作为参数直接传过来也可以)private static final String defaultKey = "1111wwww2222uuuu";//算法PKCS5Paddingprivate static final String ALGORITHMSTR = "AES/ECB/PKCS5Padding";//测试数据private static final String testContent = "1";//自测public static void main(String[] args) throws Exception {System.out.println("加密前:" + testContent);String encrypt = encrypt(testContent);System.out.println("加密后:" + encrypt);String decrypt = decrypt(encrypt);System.out.println("解密后:" + decrypt);}//AES加密--为base 64 codepublic static String encrypt(String content) throws Exception {return base64Encode(aesEncryptToBytes(content));}//AES解密--并解密base 64 codepublic static String decrypt(String encryptStr) throws Exception {encryptStr.replaceAll("#","/");return StringUtils.isEmpty(encryptStr) ? null : aesDecryptByBytes(base64Decode(encryptStr));} //base 64 encode编码private static String base64Encode(byte[] bytes) {return Base64.encodeBase64String(bytes);}//base 64 decode解码---》因为传过来的值是通过base64编码而后再进行aes加密出来的,所以解密之前先进行base64解码private static byte[] base64Decode(String base64Code) throws Exception {return StringUtils.isEmpty(base64Code) ? null : new BASE64Decoder().decodeBuffer(base64Code);}//AES加密private static byte[] aesEncryptToBytes(String content) throws Exception {KeyGenerator kgen = KeyGenerator.getInstance("AES");kgen.init(128);Cipher cipher = Cipher.getInstance(ALGORITHMSTR);cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(defaultKey.getBytes(), "AES"));return cipher.doFinal(content.getBytes("utf-8"));}//AES解密private static String aesDecryptByBytes(byte[] encryptBytes) throws Exception {KeyGenerator kgen = KeyGenerator.getInstance("AES");kgen.init(128);Cipher cipher = Cipher.getInstance(ALGORITHMSTR);cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(decryptKey.getBytes(), "AES"));byte[] decryptBytes = cipher.doFinal(encryptBytes);return new String(decryptBytes,"utf-8");}}
java类中具体调用实现。
//提供调用的方法 public static String getAes(String data){if(!StringUtils.isEmpty(data)){String str = AesUtil.decrypt(data);return str;}return data; }
三、以上js加密解密,和java加密解密,皆可通用,组合。
四、本文经由思考并解决部分问题而整理出来,参考博客
http://blog.csdn.net/z83986976/article/details/51027150;
https://blog.csdn.net/u010648555/article/details/68066629
前后台数据传输问题----AES加密,前台JS加密,后台JAVA解密。相关推荐
- JS加密,JS混淆,JS混淆加密,JS不可逆加密,JS加密压缩
分享一个JavaScript加密,JS加密,JS混淆,JS混淆加密,JS不可逆加密,JS加密压缩 ,JS加密. 使用方式 / 注意事项 1.本工具是本站长结合了64个组件(大部分为开源组件),开发出来 ...
- ASP.NET前台JS与后台CS函数如何互相调用
在实际的Web开发中,我们可能会常常遇到后台调用前台JS代码或者前台JS调用后台代码的情况.今天就把比较实用的前后台相互调用的方法总结出来和大家分享. <1>后台代码调用前台JS代码 一. ...
- 不用AJAX实现前台JS调用后台C#方法(小技巧)
纯属小技巧,高手见笑了. 一提到如何在前台JS调用后台C#方法,AJAX成为了必然的想法. 只是实现的细节采用AJAX 1.0或者AjaxPro的区别. 其实如果不用AJAX,我们也能够很方便地利用J ...
- RSA对称加密(JS加密,C#、Java解密)
目录 一.背景介绍 二.工作原理 三.实现步骤 (一)JS前端加密,.NET后端解密 1.生成RSA加密的公钥和私钥. 2.前端js加密. 3.C#解密 (二)JS前端加密,Java后端解密 1.前端 ...
- RSA非对称加密,前台vue加密,后台java解密
目录 前言 公钥和私钥的获取 公钥私钥例子 公钥 私钥 一.前端vue加密 1.1安装jsencrypt 1.2安装好后,在文件里引用 1.3 使用私钥加密 2.后端java解密 2.1调用代码 2. ...
- js前端3des加密 后台java解密
import java.security.Key; import java.security.SecureRandom; import javax.crypto.Cipher; import java ...
- Android使用webview控件加载本地html,通过Js与后台Java实现数据的传递
1.在布局文件中加WebView控件,在java中获取WebView对象. 2.加载本地html文件. webView.loadUrl("file:///android_asset/andr ...
- java请求url加密_URL请求对参数前端JS加密,后台JAVA解密
import java.io.ByteArrayOutputStream; /** * 表单传输信息加密 * @author wutz * */ public class Base64Util { p ...
- Repeater使用:绑定时 结合 前台JS及后台共享方法
//前台模板 //如下 //图片结合了js //lbl_DateStartEnd 的值 是直接绑定 //div的值 是由后绐共享的方法返回的HTML代码 <asp:Repeater ID=&qu ...
最新文章
- php mms,PHP代码示例_PHP账号余额查询接口 | 微米-中国领先的短信彩信接口平台服务商...
- 30岁自学python找工作-30岁新手入门python!尝试人生另一种可能
- 3月数据库排行:前10整体下行,出新技术了?
- And Then There Was One POJ - 3517(变形约瑟夫环+规律)
- usb otg vnc linux,20131126版本后,可以从PC通过USB-OTG VNC到pcDuino
- 一年换7家公司,95后跳槽多疯狂
- CenterOS的安装配置(配图解)
- maven -- 解决“Could not calculate build plan”问题
- winform 获取当前项目所在的路径
- 深入浅出统计学(中文版)统计学其实没那么死板!
- Centos操作系统基本介绍
- java贝塞尔函数插值_空间插值分析算法综述
- 液晶屏接口-LVDS
- 使用python提取英语句子中的英文单词(初学)
- 你知道wps可以开启护眼模式吗?
- 微信小程序 给数字或文字加横线,比如原价、已完成任务
- htt的缺点有哪些?这里列举的几点,欢迎留言
- SPSS24-64bit安装教程以及解决“因为应用程序的并行配置不正确。有关详细信息,请参阅应用程序事件日志,或使用命令行 sxstrace.exe ”的一些方法
- python中mul是什么意思_汇编MUL是什么意思?
- autojs之识别象棋位置
热门文章
- python金融分析小知识(29)——使用pandas输出excel表格并且在不同的sheet中
- jq分割数组、截取字符串、数组遍历push新数组
- GBase 8a MPP Cluster基本部署组网方案介绍
- OutLook中发送用户密码加密的小技巧
- ISP(一) 基础知识储备
- Unity2017.4.26 修改AndroidSdkVersions 增加 AndroidApiLevel29 AndroidApiLevel30 AndroidApiLevel31
- vue页面引入另一个页面
- 数字化校园平台问题-OA密码忘记如何处理
- android投屏乐视,手机投屏Letv电视的三种办法【乐播投屏】
- 使用Gradle构建变体