欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

利用JS使用Base64加密算法对密码进行加密传输到后台JAVA进行解密

程序员文章站 2024-03-14 17:31:40
...

1.需要jquery.base64.js文件,如需文件请私聊或者自己下载

2.JS代码

 <script type="text/javascript">
  /* 
 	 加密方法。没有过滤首尾空格,即没有trim.
  	加密可以加密N次,对应解密N次就可以获取明文
  */
  function encodeBase64(mingwen,times){  
	  var code="";  
	  var num=1;  
	  if(typeof times=='undefined'||times==null||times==""){   
	   		num=1;  
	   }else{    
	   		var vt=times+"";    
	   num=parseInt(vt);  
	   }  
	   if(typeof mingwen=='undefined'||mingwen==null||mingwen==""){  
	   
	   }else{    
	   		$.base64.utf8encode = true;    
	   		code=mingwen;    
	   		for(var i=0;i<num;i++){      
	   			code=$.base64.btoa(code);    
	   		}  
	   }  
   	return code;
   }
   //解密方法。没有过滤首尾空格,即没有trim
   //加密可以加密N次,对应解密N次就可以获取明文
   function decodeBase64(mi,times){  
	   var mingwen="";  
	   var num=1;  
	   if(typeof times=='undefined'||times==null||times==""){    
	   		num=1;  
	   }else{    
		   	var vt=times+"";    
		   	num=parseInt(vt);  
	  }  
	  		if(typeof mi=='undefined'||mi==null||mi==""){  
	  }else{    
	  		$.base64.utf8encode = true;    
			mingwen=mi;    
			for(var i=0;i<num;i++){      
			mingwen=$.base64.atob(mingwen);    
	  		}  
	  }  
  	return mingwen;
  }
</script>

3.JAVA解密工具类

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

/**
 * 
 * Base64加密--解密
 */
public class Base64Util {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str = "suolong2014version";
		System.out.println("测试明文[" + str + "]");
		String basecode = Base64Util.encodeBase64(str);
		System.out.println("加密后[" + basecode + "]");

		if (basecode != null) {
			String res = Base64Util.decodeBase64(basecode);
			System.out.println("解密后[" + res + "]");
		}
		String str2 = "bGhiQDEyMzQ=";
		System.out.println(str2);
		if (str2 != null) {
			String res = Base64Util.decodeBase64(str2);
			System.out.println("解密后[" + res + "]");
		}
		// ///
		System.out.println("");
		System.out.println("N次加密测试--------");
		String basecodeN = Base64Util.encodeBase64(str, 2);
		String resN = Base64Util.decodeBase64(basecodeN, 2);
		String basecodeN3 = Base64Util.encodeBase64(str, 5);
		String resN3 = Base64Util.decodeBase64(basecodeN3, 5);
	}

	// 提供加密N次
	public static String encodeBase64(String mingwen, int times) {
		int num = (times <= 0) ? 1 : times;
		String code = "";
		if (mingwen == null || mingwen.equals("")) {
		} else {
			code = mingwen;
			for (int i = 0; i < num; i++) {
				code = encodeBase64(code);
			}
		}
		return code;
	}

	// 对应提供解密N次
	public static String decodeBase64(String mi, int times) {
		int num = (times <= 0) ? 1 : times;
		String mingwen = "";
		if (mi == null || mi.equals("")) {
		} else {
			mingwen = mi;
			for (int i = 0; i < num; i++) {
				mingwen = decodeBase64(mingwen);
			}
		}
		return mingwen;
	}

	// /
	public static String encodeBase64(String mingwen) {
		String code = "";
		if (mingwen == null || mingwen.equals("")) {
		} else {
			BASE64Encoder encoder = new BASE64Encoder();
			try {
				code = encoder.encode(mingwen.getBytes("UTF-8"));
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return code;
	}

	public static String decodeBase64(String mi) {
		String mingwen = "";
		if (mi == null || mi.equals("")) {
		} else {
			BASE64Decoder decoder = new BASE64Decoder();
			try {
				byte[] by = decoder.decodeBuffer(mi);
				mingwen = new String(by,"UTF-8");
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return mingwen;
	}
}

4.JS代码与java代码有了,我们实际中的用法是前端调用js代码

			//密码加密,加密后传到后台
			function pwdDecrypt(){
				var numTimes = 3;//加密次数与后台JAVA调用时对应
				var pwd = $.trim($("#password").val());
				var enResult = encodeBase64(pwd,numTimes); //加密 
				$("#password").val(enResult);
			}

后台调用java代码

/**
*user.getPassword()为后台传过来的加密密码
*3为次数与前端对应
*/
Base64Util.decodeBase64(user.getPassword(),3);//此行代码得到解密密码

5.得到解密后的密码就可以与数据库的比对了,或者在加密存到数据库,如有不懂与我交流,耐心解答!!!

相关标签: JAVA