利用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.得到解密后的密码就可以与数据库的比对了,或者在加密存到数据库,如有不懂与我交流,耐心解答!!!
上一篇: 字符串的简单加密与解密 ...
下一篇: APP前端与后台数据RSA加密传输