登陆验证前对用户名和密码加密之后传输数据---base64加密

以下这种方法是加密传输的简单实现

1,base64.js

/**
*
*  Base64 encode / decode
*
*
*/

function Base64() {

    // private property
    _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

    // public method for encoding
    this.encode = function (input) {
        var output = "";
        var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
        var i = 0;
        input = _utf8_encode(input);
        while (i < input.length) {
            chr1 = input.charCodeAt(i++);
            chr2 = input.charCodeAt(i++);
            chr3 = input.charCodeAt(i++);
            enc1 = chr1 >> 2;
            enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
            enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
            enc4 = chr3 & 63;
            if (isNaN(chr2)) {
                enc3 = enc4 = 64;
            } else if (isNaN(chr3)) {
                enc4 = 64;
            }
            output = output +
            _keyStr.charAt(enc1) + _keyStr.charAt(enc2) +
            _keyStr.charAt(enc3) + _keyStr.charAt(enc4);
        }
        return output;
    }

    // public method for decoding
    this.decode = function (input) {
        var output = "";
        var chr1, chr2, chr3;
        var enc1, enc2, enc3, enc4;
        var i = 0;
        input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
        while (i < input.length) {
            enc1 = _keyStr.indexOf(input.charAt(i++));
            enc2 = _keyStr.indexOf(input.charAt(i++));
            enc3 = _keyStr.indexOf(input.charAt(i++));
            enc4 = _keyStr.indexOf(input.charAt(i++));
            chr1 = (enc1 << 2) | (enc2 >> 4);
            chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
            chr3 = ((enc3 & 3) << 6) | enc4;
            output = output + String.fromCharCode(chr1);
            if (enc3 != 64) {
                output = output + String.fromCharCode(chr2);
            }
            if (enc4 != 64) {
                output = output + String.fromCharCode(chr3);
            }
        }
        output = _utf8_decode(output);
        return output;
    }

    // private method for UTF-8 encoding
    _utf8_encode = function (string) {
        string = string.replace(/\r\n/g, "\n");
        var utftext = "";
        for (var n = 0; n < string.length; n++) {
            var c = string.charCodeAt(n);
            if (c < 128) {
                utftext += String.fromCharCode(c);
            } else if ((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            } else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }
        return utftext;
    }

    // private method for UTF-8 decoding
    _utf8_decode = function (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;
        while (i < utftext.length) {
            c = utftext.charCodeAt(i);
            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            } else if ((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i + 1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            } else {
                c2 = utftext.charCodeAt(i + 1);
                c3 = utftext.charCodeAt(i + 2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }
        }
        return string;
    }
}

2,前端

 <button  class="btn" onclick="cmdEncrypt()">登录</button>
function cmdEncrypt() {
            var username = $("#userName").val();
            var pwd = $("#password").val();
            var b = new Base64();

            var params = {};
            params.userName64 = b.encode(username);
            params.password64 = b.encode(pwd);
            params.validcode = $("#txtCode").val();;
            params.openID = $("#openID").val();
            params.status = $("#status").val();
            //alert(params.validcode);
            $.ajax({
                type: "POST",
                async: false,
                url: "/Account/UserLogin",
                datatype: "json",
                data: params,
                error: function (msg) { alert(‘error‘)},
                success: function (msg) {
                    //alert(msg);
                    if (msg == ‘success‘) {
                        location.href = "/Account/FirstPage?status=" + params.status;
                    }
                    else {
                        $(".tit").html(msg);
                    }
                }
            });
        }    

3,MVC  C# 实现

/// <summary>
        /// Base64解密
        /// </summary>
        /// <param name="codeName">解密采用的编码方式,注意和加密时采用的方式一致</param>
        /// <param name="result">待解密的密文</param>
        /// <returns>解密后的字符串</returns>
        public static string DecodeBase64(Encoding encode, string result)
        {
            string decode = "";
            byte[] bytes = Convert.FromBase64String(result);
            try
            {
                decode = encode.GetString(bytes);
            }
            catch
            {
                decode = result;
            }
            return decode;
        } 
 //用户名和密码解密
            string UserName = DecodeBase64(Encoding.UTF8, UserName64);
            string Pwd = DecodeBase64(Encoding.UTF8, Pwd64);

登陆验证前对用户名和密码加密之后传输数据---base64加密,布布扣,bubuko.com

时间: 2024-10-06 17:58:21

登陆验证前对用户名和密码加密之后传输数据---base64加密的相关文章

java web 程序---javabean实例--登陆界面并显示用户名和密码

重点:注意大小写,不注意细节,这点小事,还需要请教 发现一个问题,也是老师当时写的时候,发现代码没错,但是就是运行问题. 大家看,那个java类,我们要求是所有属性均为私有变量,但是方法为公有的,如果方法为不公有的,那么运行就一定有问题,一定声明为public.不写修饰符,就是不对. 这样程序可以运行了,细节.这就是我觉得老师很棒的原因. 一个表单 deng.jsp ? 1 2 3 4 5 6 7 8 <body>   <form action="c.jsp">

单个用户OWA登陆失败,提示用户名和密码错误

用户向管理员反映他无法登陆OWA,提示用户名和密码错误.即使重置密码,依然不能登陆.奇了个怪,单独检查用户邮箱,发现跟其他用户邮箱没有任何区别,专门看了一下OWA启用情况,也的确是启用了OWA的. 既然Exchang服务器没有啥问题,那就要重新定位到客户端的问题了,联想之前公司内部分用户在邮箱迁移过程中,由于没有勾选权限继承,导致迁移失败的问题.那这一次该用户无法登陆OWA,很有可能也是AD账号的问题.为此,找一个正常用户的AD账号和该用户的AD账号进行对比,权限.配置.......在某一个点,

iOS HmacSHA1加密 和 MD5 Base64加密 --iOS开发系列---项目中成长的知识五

项目中开发中需要对一些数据进行加密后和服务器验证是否是我们客户端发出的请求! 方案是服务器定的,使用HmacSHA1加密和MD5 Base64加密 加密过程比较复杂 1.获取格林威治时间 2.用base64编码对请求数据内容进行MD5值计算 3.设置请求格式 4.设置鉴权信息,需要对上面的3个内容以及请求的链接 进行HMacSHA1再次进行加密 加密过后把上面4步获得的值加入到http的请求头中,一并发送给服务器,服务器经过验证后,才返回给我们我们想要的信息 下面贴代码说明我们使用的两个加密 首

Java_Swing程序设计_尝试开发一个登陆窗体,包括用户名、密码以及提交按钮和重置按钮,当用户输入用户名my,密码love时,弹出登陆成功提示对话框。

package com.lzw; import java.awt.*;import java.awt.event.*; import javax.swing.*; public class UseCase3 extends JFrame{ /** * */ private static final long serialVersionUID = 1L; public UseCase3(){ setVisible(true); setDefaultCloseOperation(WindowCons

登陆失败:未知的用户名或密码错误

按下面的方法"把网络安全:LAN管理器身份验证级别从"没有定义"更改为"发送 LM 和 NTLM - 如果已协商,则使用 NTLMv2 会话安全:"即可."还是不可!!! http://jingyan.baidu.com/article/f3e34a128cbfaef5eb65352e.html ---- 原来是原先家庭普通版的win7系统用同样的电脑名称共享过,折腾了良久,重新改了个电脑名称终于治好了~~ ---- 题外话: 原先的家庭普通版的

登陆失败:未知的用户名或密码错误解决办法

点击电脑开始-"运行"按钮   输入"secpol.msc"命令,并点击"确定"按钮.   弹出"本地安全策略"窗口,如下图所示路径,把网络安全:LAN管理器身份验证级别从"没有定义"更改为"发送 LM 和 NTLM - 如果已协商,则使用 NTLMv2 会话安全:"即可,并关闭"本地安全策略"窗口   让我们回来再试着来访问局域网内的电脑,输入\\局域网电脑的IP,

完美解决方案:wordpress后台进不去,用户名、密码输入了登陆没有反应

http://mingming4745.blog.163.com/blog/static/173845720119159425890/?suggestedreading ———————————————————————————————————————————————————————————————————————————————— 亲自试过,解决了自己网站的问题,因此转过来与饱受困惑的战友们分享.原文链接:www.zhuiai8.com WordPress无法登陆后台,输入用户名.密码之后仍旧返回

Java:Cookie实现记住用户名、密码

package com.gamecenter.api.util; import java.io.IOException; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import javax.servlet.FilterChain;

java如何判断用户名和密码

java如何判断用户名和密码?Java验证用户名和密码 假设在某仓库管理系统的登录界面中需要输入用户名和密码,其中用户名只能由 6~10 位数字组成,密码只能有 6 位,任何不符合用户名或者密码要求的情况都视为异常,并且需要捕获并处理该异常. 下面使用自定义异常类来完成对用户登录信息的验证功能,实现步骤如下. (1) 编写自定义异常类 LoginException,该类继承自 Exception.在 LoginException 类中包含两个构造方法,分别为无参的构造方法和含有一个参数的构造方法