网站自动记住密码(引)

Login.cs

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

public partial class Admin_Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Title = ConfigurationManager.AppSettings["WebName"].ToString() + " - 管理登陆";

if (!IsPostBack)
        {
            Cookie = Request.Cookies["UserInfo"];
            if (Cookie != null)
            {
                Name.Text = Cookie.Values["userName"];
                //asp.net中的TextBox如果TextMode为Password的时候不支持直接赋值,
              //在此处以添加属性的方式把读取的密码赋值给密码框
                Pwd.Attributes.Add("value", BLL.CookieHelper.DecryptQueryString

              (Cookie.Values["Pwd"].ToString()));
            }
        }

}

protected void Sub_Click(object sender, EventArgs e)
    {
        Model.Admin User = new Model.Admin();
        User.AdminName = Name.Text;
        User.AdminPwd = BLL.Message.ToSHA512(Pwd.Text.ToString());
        BLL.Business Pn163 = new BLL.Business();
        DataTable Dt = Pn163.DtRead(User);
        if (!String.IsNullOrEmpty(User.AdminName) && !String.IsNullOrEmpty(User.AdminPwd))
        {
            if (Session["Code"].ToString() == ChkCode.Text)
            {
                if (Dt.Rows.Count > 0)
                {
                    Session["Admin"] = User.AdminName;
                    Session["Pwd"] = User.AdminPwd;
                    Session["Comp"] = Dt.Rows[0]["Comp"].ToString();

// 如果选择"下次记住我"
                    if (this.chboxRemeber.Checked)
                    {
                        this.SaveCookie(Name.Text, BLL.CookieHelper.EncryptQueryString

                     (Server.UrlEncode(Pwd.Text)));
                    }
                    Response.Redirect("./Admin.aspx");
                }
                else BLL.Message.Show("用户名或密码错误!");
            }
            else BLL.Message.Show("验证码错误!");
        }
        else BLL.Message.Show("请输入用户名和密码!");
    }

private HttpCookie Cookie = null;
   
    /// <summary>
    /// 记住用户名和密码
    /// </summary>
    private void SaveCookie(string userName, string Pwd)
    {
        Cookie = Request.Cookies["UserInfo"];

if (Cookie == null || !Cookie.Values["userName"].Equals(userName))
        {
            Cookie = new HttpCookie("UserInfo");
            Cookie.Values.Add("userName", userName);
            Cookie.Values.Add("Pwd", Pwd);
            Cookie.Expires = DateTime.Now.AddDays(365);
            Response.Cookies.Add(Cookie);
        }
    }
}

CookieHelper.cs

using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;
using System.IO;

namespace BLL
{

// 这个类是实现了DES的加密和解密
    public class CookieHelper
    {
        //URL传输参数加密Key这个key可以自己设置支持8位这个东西很重要的,密钥
        static string _QueryStringKey = "e2345678";

/// <summary>
        /// 加密算法
        /// </summary>
        public static string EncryptQueryString(string QueryString)
        {
            return Encrypt(QueryString, _QueryStringKey);
        }

/// <summary>
        /// 解密算法
        /// </summary>
        public static string DecryptQueryString(string QueryString)
        {
            return Decrypt(QueryString, _QueryStringKey);
        }

public static string Encrypt(string originalString, string sKey)
        {
            DESCryptoServiceProvider des = new DESCryptoServiceProvider();

// 把字符串放到byte数组中
            byte[] inputByteArray = Encoding.Default.GetBytes(originalString);

des.Key = ASCIIEncoding.ASCII.GetBytes(sKey); //建立加密对象的密钥和偏移量
            des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);  //原文使用ASCIIEncoding.ASCII方法的

GetBytes方法
            MemoryStream ms = new MemoryStream();         //使得输入密码必须输入英文文本
            CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);

cs.Write(inputByteArray, 0, inputByteArray.Length);
            cs.FlushFinalBlock();
            StringBuilder ret = new StringBuilder();

foreach (byte b in ms.ToArray())
            {
                ret.AppendFormat("{0:X2}", b);
            }
            ret.ToString();
            return ret.ToString();
        }

public static string Decrypt(string originalString, string sKey)
        {
            DESCryptoServiceProvider des = new DESCryptoServiceProvider();

byte[] inputByteArray = new byte[originalString.Length / 2];
            for (int x = 0; x < originalString.Length / 2; x++)
            {
                int i = (Convert.ToInt32(originalString.Substring(x * 2, 2), 16));
                inputByteArray[x] = (byte)i;
            }

//建立加密对象的密钥和偏移量,此值重要,不能修改

des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);

des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
            MemoryStream ms = new MemoryStream();
            CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);

cs.Write(inputByteArray, 0, inputByteArray.Length);
            cs.FlushFinalBlock();

//建立StringBuild对象,CreateDecrypt使用的是流对象,必须把解密后的文本变成流对象
            StringBuilder ret = new StringBuilder();

return System.Text.Encoding.Default.GetString(ms.ToArray());
        }

}
}

时间: 2024-10-29 19:07:52

网站自动记住密码(引)的相关文章

最新版本IE设置有记住密码功能,对于外网用户来说不安全

在网页中输入资料时,经常会碰到要求输入密码的情况,下次再进入这个网页时,因为浏览器设置的关系,同一个网页不必再手动输入密码,密览器会自动记住密码并且进行填充.这样的设计虽然很方便,但是如果别人借用了你的电脑,就可以轻送使用你的帐号进行登录,很不保险.还有一个风险就是可以轻松查看你在浏览器保存的密码名文 HKEY_CURRENT_USER\Software\Policies\Microsoft \Internet Explorer\Control Panel 下 新建一个名为 FormSugges

危险,不要随意让网站记住密码自动登陆!

为了方便用户登录,几乎所有的网站都实现了"记住密码"."自动登陆"这样似乎人性化的功能. 我也很喜欢这个功能,因为我自己的脑子实在是讨厌记东西. 为了安全起见,我的密码都设置的很复杂,满足"数字+特殊符号+英文字母大小写". 但密码一复杂,我就总记不住,就想让网站替我记住. 但殊不知,这背后隐藏着巨大的风险. 我先劝大家一声:"危险,不要随意让网站记住密码自动登陆!" 要了解事情的真相,请随我来看一看如何利用cookie实现记

Cookie实现记住密码自动登录功能

网站登录的时候一般会有一个“记住密码”或者“一周之内记住我”之类的勾选框,勾选之后指定时间内访问同一网站将不需要再次输入账号密码,很方便,如下图所示 原理很简单,如下 勾选复选框登录之后会传递一个开关值(on/off)给后台的登录方法(例如/login),以此为依据: 登录成功后,值为 on 时向客户端浏览器写入 Cookie 信息,包括用户名和密码(为安全计,可以更换或者加密要保存的信息): 再次访问站点时,读取浏览器传过来的 Cookie 信息并自动登录. 先看看登录方法 @RequestM

android记住密码 和自动登录

import android.app.Activity;import android.content.Intent;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import andro

基于localStorge开发登录模块的记住密码与自动登录

前沿||我是乐于分享,善于交流的鸟窝 先做写一篇关于登录模块中记住密码与自动登录的模块.鸟窝微信:jkxx123321 关于这个模块功能模块的由来,这是鸟大大的处女秀,为什么这么说呢?一天在群里,一个哥们说有私活,开发一个****模块,我那天手痒痒就和他聊了两句,然后,就决定给她做这个模块了,和他谈了谈交付时间,他说最迟两天,然后谈了谈加个,最后达成,500¥!!!这个模块其实第一天晚上我就开发出来了,那时我给他微信说,功能模块开发ok了,要不要远程查看一下,没问题的话就交了,一会他回我,好了就

记住密码后,密码框Password会自动带出数据

一般登陆之后浏览器会询问是否记住密码,如果把密码记住在浏览器上,下次登陆的时候浏览器会把用户名和密码自动填充到登录页面.前段时间服务站平台的员工账号模块提测后,测试提出360浏览器记住密码后会自用把登陆账号和密码填充到添加账号页面和修改账号页面(部分其他浏览器也会有该问题),经过本地测试后发现确实存在该问题. 类似于这样: 从用户的角度来说 这么整肯定不行,即使是浏览器的问题.通过组内人员的一步一步探索最终找到解决办法: 1. 通过网上搜索 发现有些文章是提供设置设置文本框的autocomple

Android记住密码后自动登录

/** * * @author alex * @version 2014-7-31下午5:25:45 * */ public class LoginActivity extends Activity { private EditText name; private EditText pass; private CheckBox isRemenber; private CheckBox isLoginSelf; private Button longin; private ProgressDial

Android 记住密码和自动登录界面的实现(SharedPreferences 的用法)

原文:http://blog.csdn.net/liuyiming_/article/details/7704923 SharedPreferences介绍: SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置参数,它是采用xml文件存放数据的,文件存放在"/data/data<package name>/shared_prefs"目录下. SharedPreferences的用法: 由于SharedPreferences是

jquery记住密码,记住账号,自动登录

1.引入jquery库 2.引入jquery.cookie.js库 3.引入操作js jsp如下: $(document).ready(function() { //输入框获得焦点-失去焦点 $(".oaText").focus(function(){ oaFocus(".oaText","请输入用户名"); }); $(".oaText").blur(function(){ oaBlur(".oaText"