数据库密码加密:MD5加密

版权声明:转载请注明出处:http://blog.csdn.net/Guobeibei_123 https://blog.csdn.net/Guobeibei_123/article/details/81780711

什么是数据库加密

数据库加密系统是一款基于透明加密技术的数据库防泄漏系统,该产品能够实现对数据库中的敏感数据加密存储、访问控制增强、应用访问安全、安全审计以及三权分立等功能。

数据库加密的方式有6种方式:DES加密算法、AES加密算法、MD5加密算法、RSA加密算法、Base64加密算法、SHAI加密算法等。

MD5加密:

MD5的典型应用是对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改。比如,在UNIX下有很多软件在下载的时候都有一个文件名相同,文件扩展名为.md5的文件,在这个文件中通常只有一行文本。

MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。举个例子,你将一段话写在一个叫 readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现(两个MD5值不相同)。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。

MD5还广泛用于操作系统的登陆认证上,如Unix、各类BSD系统登录密码、数字签名等诸多方。如在UNIX系统中用户的密码是以MD5(或其它类似的算法)经Hash运算后存储在文件系统中。当用户登录的时候,系统把用户输入的密码进行MD5 Hash运算,然后再去和保存在文件系统中的MD5值进行比较,进而确定输入的密码是否正确。通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。这可以避免用户的密码被具有系统管理员权限的用户知道。MD5将任意长度的“字节串”映射为一个128bit的大整数,并且是通过该128bit反推原始字符串是困难的,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。所以,要遇到了md5密码的问题,比较好的办法是:你可以用这个系统中的md5()函数重新设一个密码,如admin,把生成的一串密码的Hash值覆盖原来的Hash值就行了。

MD5具体事例:

首先是创建一个ajax文件夹,创建ajax的类,具体是:

/// <summary>
    /// Login 的摘要说明
    /// </summary>
    public class Login : IHttpHandler,System.Web.SessionState.IReadOnlySessionState
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            //接收用户名和密码
            string account = context.Request.QueryString["Account"];
            string password = context.Request.QueryString["Password"];
            //context.Response.Write($"用户名:{account},密码:{password}");

            UserBLL man = new UserBLL();
            CurrenUser user = man.GetUserInfo(account,password);
            if (user!=null)
            {
               context.Session["userInfo"] = user.UserID;
                context.Response.Write("ok");
            }
            else
            {
                context.Response.Write("您输入的账户或者密码有误,请重新输入!");
            }
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }

以后就是在你所要登录得界面添加$(funtion(){}),集体如下:

<script type="text/javascript">
        $(function ()
        {
            $("#btn_login").click(function ()
            {
                var account = $("txt_name").val();
                var password = $("txt_password").val();

                $.ajax({
                    type: "POST",
                    url: "/ashx/Login.ashx",
                    data: { Account: account, Password: password },
                    success: function (msg) {
                        if (msg == "ok") {
                            location.href("UserInfoXiangQing.aspx");
                        }
                        else {
                            alert(msg);
                        }
                    }
                });
            });
        });
    </script>

接着就是在三层里面添加一个MD5加密的类,名称EncryptHelper,具体的代码:

public class EncryptHelper
    {
        /// <summary>
        /// MD5加密算法
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static string GetMD5Hash(string str)
        {
            using (MD5 md5Obj = MD5.Create())
            {
                //另一种MD5的方式
                // MD5 md5Obj = new MD5CryptoServiceProvider();
                byte[] bytes = Encoding.UTF8.GetBytes(str);
                byte[] md5byte = md5Obj.ComputeHash(bytes);
                StringBuilder bulider = new StringBuilder();
                for (int i = 0; i < md5byte.Length; i++)
                {
                    bulider.Append(md5byte[i].ToString("X2"));
                }
                return bulider.ToString();
            };
        }

接着然后在业务逻辑层的登录界面中调用创建的MD5加密的类,具体的代码为:

/// <summary>
        /// 根据账号和密码登录
        /// </summary>
        /// <param name="Account"></param>
        /// <param name="Password"></param>
        /// <returns></returns>
        public CurrenUser GetUserInfo(string Account, string Password)
        {
            //引用MD5加密
            Password = EncryptHelper.EncryptHelper.GetMD5Hash(Password);
            return db.GetUserInfo(Account, Password);
        }

MD5加密就是这些

猜你喜欢

转载自blog.csdn.net/Guobeibei_123/article/details/81780711