js base64加密,后台解密

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

base64encode.js

// base64加密开始
        var base64encodechars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
		var base64decodechars = new Array(
		-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
		-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
		-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,
		52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,
		-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
		15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
		-1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
		41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1); 
       
        function base64encode(str) {

        	var out, i, len;
        	var c1, c2, c3;
        	len = str.length;
        	i = 0;
        	out = "";
        	while (i < len) {
        	c1 = str.charCodeAt(i++) & 0xff;
        	if (i == len) {
        	out += base64encodechars.charAt(c1 >> 2);
        	out += base64encodechars.charAt((c1 & 0x3) << 4);
        	out += "==";
        	break;
        	}
        	c2 = str.charCodeAt(i++);
        	if (i == len) {
        	out += base64encodechars.charAt(c1 >> 2);
        	out += base64encodechars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xf0) >> 4));
        	out += base64encodechars.charAt((c2 & 0xf) << 2);
        	out += "=";
        	break;
        	}
        	c3 = str.charCodeAt(i++);
        	out += base64encodechars.charAt(c1 >> 2);
        	out += base64encodechars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xf0) >> 4));
        	out += base64encodechars.charAt(((c2 & 0xf) << 2) | ((c3 & 0xc0) >> 6));
        	out += base64encodechars.charAt(c3 & 0x3f);
        	}
        	return out; 
        } 
        // base64加密结束

 需要加密的内容:

function del(id) {
    	if(!$("#admin-pwd").val()){
    		Yn.errorMsg("请先输入管理员密码!");
    		return false;
    	}
  		if(!confirm("删除操作不可逆,你确定要删除该分店的条目吗?"))
  			return;
  			var mangePwd = base64encode($("#admin-pwd").val());  //对数据进行base64处理,防止在控制台的form data看到明文 edit by chn
	  		$.post("${ctx}/syscfg/store/delete", {"id":id,"mangePwd":mangePwd}, function(result){
	  			if(!result.success) {
	  				Yn.errorAlert(result.message);
	  				return;
	  			}else{
	  				location.reload();
	  			}
	  			
	  		},"json");
  }

 后台controller解析:

@ResponseBody
    @RequestMapping("delete")
    public Result delete(ShopBranch branch, HttpSession session) {
        Result result = new Result();

        try {
            Shop shop = SessionUtils.getShop(session);
            
            //页面加密,后台进行base64解密 edit by chn
            branch.setMangePwd(new String(Base64Util.decode(branch.getMangePwd())));
            
            Result delRst = shopBranchService.delete(branch);
            if (delRst.isSuccess()) {
               system.out.println("成功");
            }
            return delRst;
        } catch (Exception e) {
            logger.error("删除异常", e);
        }
        return result;
    }

 后台base64主要解密代码:

 

import java.io.UnsupportedEncodingException;

public class Base64Util
{
     private static byte[] base64DecodeChars = new byte[] { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1,
        -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31,
        32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1 };

    /**
     * 解密
     * 
     * @param str 密文
     * @return 明文的字节数组
     * @throws UnsupportedEncodingException
     */
    public static byte[] decode( String str )
        throws UnsupportedEncodingException
    {
        StringBuffer sb = new StringBuffer();
        byte[] data = str.getBytes( "US-ASCII" );
        int len = data.length;
        int i = 0;
        int b1, b2, b3, b4;
        while ( i < len )
        {
            /* b1 */
            do
            {
                b1 = base64DecodeChars[data[i++]];
            }
            while ( i < len && b1 == -1 );
            if ( b1 == -1 )
                break;
            /* b2 */
            do
            {
                b2 = base64DecodeChars[data[i++]];
            }
            while ( i < len && b2 == -1 );
            if ( b2 == -1 )
                break;
            sb.append( (char) ( ( b1 << 2 ) | ( ( b2 & 0x30 ) >>> 4 ) ) );
            /* b3 */
            do
            {
                b3 = data[i++];
                if ( b3 == 61 )
                    return sb.toString().getBytes( "iso8859-1" );
                b3 = base64DecodeChars[b3];
            }
            while ( i < len && b3 == -1 );
            if ( b3 == -1 )
                break;
            sb.append( (char) ( ( ( b2 & 0x0f ) << 4 ) | ( ( b3 & 0x3c ) >>> 2 ) ) );
            /* b4 */
            do
            {
                b4 = data[i++];
                if ( b4 == 61 )
                    return sb.toString().getBytes( "iso8859-1" );
                b4 = base64DecodeChars[b4];
            }
            while ( i < len && b4 == -1 );
            if ( b4 == -1 )
                break;
            sb.append( (char) ( ( ( b3 & 0x03 ) << 6 ) | b4 ) );
        }
        return sb.toString().getBytes( "iso8859-1" );
    }

}

 

转载于:https://www.cnblogs.com/chn58/p/5443968.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值