婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > ASP.NET MVC結(jié)合JavaScript登錄、校驗(yàn)和加密

ASP.NET MVC結(jié)合JavaScript登錄、校驗(yàn)和加密

熱門標(biāo)簽:威力最大的電銷機(jī)器人 旅游地圖標(biāo)注線路 電話機(jī)器人鑰匙扣 400電話唐山辦理 地圖標(biāo)注位置怎么弄圖 廣西房產(chǎn)智能外呼系統(tǒng)推薦 漯河外呼調(diào)研線路 電銷專用外呼線路 電銷外呼系統(tǒng)是違法的嗎

最近閑來無事給自己寫了家庭財(cái)務(wù)收支管理系統(tǒng),也就包含支出管理,收入管理和一些統(tǒng)計(jì)功能。

先說登錄模塊,因?yàn)樯婕癎ET和POST請(qǐng)求,這些東西都是能被監(jiān)控和抓取的所以就考慮這使用RSA加密解密方式傳輸用戶名和密碼參數(shù),頁(yè)面JS如下: 

/*需要引入三個(gè)JS文件,BigInt.js、RSA.js和Barrett.js,用到cookie則需要引入jquery.cookie.js文件*/
//與后臺(tái)交互獲取公鑰
function getPublicKey() {
 var pubKey = '';
 if ($.cookie('publicKey') == null) {
  $.ajax({
   url: "/Account/GetRsaPublicKey",
   type: "get",
   contentType: "application/x-www-form-urlencoded; charset=utf-8",
   async: false,
   data: {},
   dataType: "json",
   success: function (data) {
    if (data.Code == 0) {
     pubKey = data.RsaPublicKey + "," + data.Key;
     $.cookie('publicKey', pubKey, { expires: 1 / 1440 });
    } else {
     Config.Method.JudgeCode(data, 1);
    }
   }
  });
 } else {
  pubKey = $.cookie('publicKey');
 }
 return pubKey;
}
//公鑰加密用戶密碼Pwd為RSA加密后參數(shù)
function rsaEncrypt(pwd) {
 var publicKey = getPublicKey();
 setMaxDigits(129);
 var rsaKey = new RSAKeyPair(publicKey.split(",")[0], "", publicKey.split(",")[1]);
 var pwdRtn = encryptedString(rsaKey, pwd);
 return pwdRtn + "," + publicKey.split(",")[2];
}
//POST登錄請(qǐng)求,參數(shù)
script type="text/javascript">
 $(function () {
  $('#btnSubmit').live('click', function () {
   var uName = $('#u').val();
   var pwd = $('#p').val();
   if (uName == '') {
    alert('用戶名不能為空');
    return;
   }
   if (pwd == '') {
    alert('用戶密碼不能為空');
    return;
   }
   var enPwd = rsaEncrypt(pwd);
   $.ajax({
    type: "POST",
    url: "/Account/UserLogin",
    data: { 'UserName': uName, 'Pwd': enPwd.split(",")[0], 'Key': enPwd.split(",")[1], 'RUrl': $('#hiddenUrl').val() },
    contentType: "application/x-www-form-urlencoded; charset=utf-8",
    async: false,
    dataType: "json",
    success: function (data) {
     if (data.result == true) {
      window.location.href = data.url;
      return false;
     } else {
      $('#msg').text(data.message);
     }
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
     $('#msg').text(XMLHttpRequest.status + '||' + XMLHttpRequest.readyState + '||' + textStatus);
    }
   });
  });
 })
/script>

前臺(tái)加密完成后就需要后臺(tái)做解密處理,解密完成后需要使用MD5加密現(xiàn)有密碼與數(shù)據(jù)庫(kù)中用戶密碼進(jìn)行比較驗(yàn)證,如果驗(yàn)證通過則需要寫入cookie以便下次用戶能自   動(dòng)登錄,由于cookie中我不希望用戶名和密碼都明碼存儲(chǔ),我這里用到了AES加密的方式,自定義一個(gè)32位的加密密鑰對(duì)cookie進(jìn)行加密解密處理,后臺(tái)c#代碼如下:

[HttpPost]
  public JsonResult UserLogin(string UserName, string Pwd, string Key, string RUrl)
  {
   string privateKey = Common.CacheGet(Key) as string;
   if (!string.IsNullOrEmpty(privateKey))
   {
    if (string.IsNullOrEmpty(UserName))
    {
     return Json(new { result = false, message = "用戶名為空" }, JsonRequestBehavior.AllowGet);
    }
    if (string.IsNullOrEmpty(Pwd))
    {
     return Json(new { result = false, message = "用戶密碼為空" }, JsonRequestBehavior.AllowGet);
    }
    string pwd = Common.DecryptRSA(Pwd, privateKey);//私鑰解密
    string md5Pwd = Common.NoneEncrypt(Common.NoneEncrypt(Common.NoneEncrypt(pwd, 1), 1), 1);//將解密后的值md5加密3次
    AccountUnserInfo userInfo = bll.GetUserInfo(UserName.Trim(), md5Pwd);
    if (userInfo != null  userInfo.U_Id > 0)//用戶信息存在
    {
     //用戶名、密碼放入cookie
     HttpCookie cookie = new HttpCookie("fw_izz");
     //AES加密Cookie
     cookie["u_name"] = AesEncryptHelper.EncryptAes(UserName);
     cookie["u_pwd"] = AesEncryptHelper.EncryptAes(pwd);
     cookie.Expires = DateTime.Now.AddDays(7);
     Response.Cookies.Add(cookie);
     if (!string.IsNullOrEmpty(RUrl))//接收隱藏域中的值
     {
      return Json(new { result = true, message = "成功", url = RUrl });
     }
     else
     {
      return Json(new { result = true, message = "成功", url = "/AccountDetail/Index" });
     }
    }
    else
    {
     return Json(new { result = false, message = "用戶信息不存在", url = "/Account/Index" });
    }
   }
   else
   {
    return Json(new { result = false, message = "非法秘鑰", url = "/Account/Index" });
   }
  }

各種加密解密方法、Cache操作以及cookie操作代碼如下:  

public class Common
 {
  /// summary>
  /// 產(chǎn)生一組RSA公鑰、私鑰
  /// /summary>
  /// returns>/returns>
  public static Dictionarystring, string> CreateRsaKeyPair()
  {
   var keyPair = new Dictionarystring, string>();
   var rsaProvider = new RSACryptoServiceProvider(1024);
   RSAParameters parameter = rsaProvider.ExportParameters(true);
   keyPair.Add("PUBLIC", BytesToHexString(parameter.Exponent) + "," + BytesToHexString(parameter.Modulus));
   keyPair.Add("PRIVATE", rsaProvider.ToXmlString(true));
   return keyPair;
  }

  /// summary>
  /// RSA解密字符串
  /// /summary>
  /// param name="encryptData">密文/param>
  /// param name="privateKey">私鑰/param>
  /// returns>明文/returns>
  public static string DecryptRSA(string encryptData, string privateKey)
  {
   string decryptData = "";
   try
   {
    var provider = new RSACryptoServiceProvider();
    provider.FromXmlString(privateKey);

    byte[] result = provider.Decrypt(HexStringToBytes(encryptData), false);
    ASCIIEncoding enc = new ASCIIEncoding();
    decryptData = enc.GetString(result);
   }
   catch (Exception e)
   {
    throw new Exception("RSA解密出錯(cuò)!", e);
   }
   return decryptData;
  }

  private static string BytesToHexString(byte[] input)
  {
   StringBuilder hexString = new StringBuilder(64);

   for (int i = 0; i  input.Length; i++)
   {
    hexString.Append(String.Format("{0:X2}", input[i]));
   }
   return hexString.ToString();
  }

  public static byte[] HexStringToBytes(string hex)
  {
   if (hex.Length == 0)
   {
    return new byte[] { 0 };
   }
   if (hex.Length % 2 == 1)
   {
    hex = "0" + hex;
   }
   byte[] result = new byte[hex.Length / 2];
   for (int i = 0; i  hex.Length / 2; i++)
   {
    result[i] = byte.Parse(hex.Substring(2 * i, 2), System.Globalization.NumberStyles.AllowHexSpecifier);
   }
   return result;
  }

  private static ObjectCache Cache
  {
   get { return MemoryCache.Default; }
  }
  /// summary>
  /// 獲取緩存
  /// /summary>
  /// param name="key">/param>
  /// returns>/returns>
  public static object CacheGet(string key)
  {
   return Cache[key];
  }
  /// summary>
  /// 設(shè)置緩存
  /// /summary>
  /// param name="key">/param>
  /// param name="data">/param>
  /// param name="cacheTime">/param>
  public static void CacheSet(string key, object data, int cacheTime)
  {
   CacheItemPolicy policy = new CacheItemPolicy();
   policy.AbsoluteExpiration = DateTime.Now + TimeSpan.FromMinutes(cacheTime);
   Cache.Add(new CacheItem(key, data), policy);
  }
  /// summary>
  /// 判斷緩存是否存在
  /// /summary>
  /// param name="key">/param>
  /// returns>/returns>
  public static bool IsSet(string key)
  {
   return (Cache[key] != null);
  }
  /// summary>
  /// 緩存失效
  /// /summary>
  /// param name="key">/param>
  public static void CacheRemove(string key)
  {
   Cache.Remove(key);
  }
  /// summary>
  /// 對(duì)字符串進(jìn)行加密(不可逆)
  /// /summary>
  /// param name="Password">要加密的字符串/param>
  /// param name="Format">加密方式,0 is SHA1,1 is MD5/param>
  /// returns>/returns>
  public static string NoneEncrypt(string Password, int Format)
  {
   string strResult = "";
   switch (Format)
   {
    case 0:
     strResult = FormsAuthentication.HashPasswordForStoringInConfigFile(Password, "SHA1");
     break;
    case 1:
     strResult = FormsAuthentication.HashPasswordForStoringInConfigFile(Password, "MD5");
     break;
    default:
     strResult = Password;
     break;
   }
   return strResult;
  }
 }

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • js實(shí)現(xiàn)登錄注冊(cè)框手機(jī)號(hào)和驗(yàn)證碼校驗(yàn)(前端部分)
  • JavaScript 完成注冊(cè)頁(yè)面表單校驗(yàn)的實(shí)例
  • JavaScript注冊(cè)時(shí)密碼強(qiáng)度校驗(yàn)代碼
  • js簡(jiǎn)單實(shí)現(xiàn)用戶注冊(cè)信息的校驗(yàn)代碼
  • JS校驗(yàn)與最終登陸界面功能完整示例
  • 詳解AngularJs HTTP響應(yīng)攔截器實(shí)現(xiàn)登陸、權(quán)限校驗(yàn)
  • Angular.js與node.js項(xiàng)目里用cookie校驗(yàn)賬戶登錄詳解
  • jsp登陸校驗(yàn)演示 servlet、login、success
  • 攔截JSP頁(yè)面,校驗(yàn)是否已登錄詳解及實(shí)現(xiàn)代碼
  • javascript使用正則表達(dá)式實(shí)現(xiàn)注冊(cè)登入校驗(yàn)

標(biāo)簽:湘西 綏化 焦作 湖北 試駕邀約 無錫 銅陵 欽州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《ASP.NET MVC結(jié)合JavaScript登錄、校驗(yàn)和加密》,本文關(guān)鍵詞  ASP.NET,MVC,結(jié)合,JavaScript,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《ASP.NET MVC結(jié)合JavaScript登錄、校驗(yàn)和加密》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于ASP.NET MVC結(jié)合JavaScript登錄、校驗(yàn)和加密的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    狂野欧美性猛交blacked| 中文字幕综合网| 久久av资源网| 一区二区三区四区在线播放| 日韩欧美中文字幕精品| 99国产精品久久久久久久久久| 日韩精品电影在线| 亚洲欧洲精品一区二区三区 | 91精品国产综合久久小美女| 国v精品久久久网| 日本成人中文字幕| 亚洲国产综合视频在线观看| 国产精品免费久久| 久久久欧美精品sm网站| 欧美不卡在线视频| 欧美日韩在线一区二区| 一本一本大道香蕉久在线精品| 一区二区三区成人| 亚洲黄色片在线观看| 国产精品久久久久永久免费观看| 日韩欧美123| 精品国产sm最大网站免费看| 欧美日韩另类国产亚洲欧美一级| 日本电影欧美片| 欧美少妇bbb| 欧洲精品一区二区| 欧美性感一区二区三区| 欧美视频一区二区在线观看| 欧美日韩精品系列| 3atv一区二区三区| 欧美人妇做爰xxxⅹ性高电影| 欧美久久久久免费| 91精品蜜臀在线一区尤物| 中文字幕一区二区在线播放| 一区视频在线播放| 亚洲精品美国一| 一区二区三区精品| 日本成人超碰在线观看| 蜜桃av噜噜一区二区三区小说| 日本午夜一区二区| 国产一区二区电影| 99视频有精品| 欧美性感一区二区三区| 制服丝袜亚洲网站| 久久久久久久久蜜桃| 国产欧美精品一区二区三区四区 | 欧美精品在线观看一区二区| 欧美一区二区视频在线观看| 精品福利一二区| 亚洲精品欧美在线| 琪琪久久久久日韩精品| 国产资源在线一区| 色国产综合视频| 日韩免费看的电影| 国产精品私人影院| 婷婷亚洲久悠悠色悠在线播放| 久久99精品国产| 91网页版在线| 欧美三级资源在线| 亚洲精品一区二区三区四区高清| 国产欧美一区二区三区网站| 亚洲美女在线一区| 国产在线播放一区| 在线这里只有精品| 久久午夜羞羞影院免费观看| 亚洲一区二区综合| 国产91精品露脸国语对白| 欧美影院一区二区三区| 国产偷v国产偷v亚洲高清| 首页综合国产亚洲丝袜| 成人美女在线视频| 正在播放亚洲一区| 亚洲另类色综合网站| 国产揄拍国内精品对白| 欧美亚洲一区二区在线| 中文字幕色av一区二区三区| 5566中文字幕一区二区电影| 欧美国产日韩精品免费观看| 毛片一区二区三区| 欧美影院精品一区| 亚洲少妇最新在线视频| 亚洲欧洲另类国产综合| 国产精品一区二区在线播放| 欧美日韩国产一级| 亚洲三级小视频| 成人福利在线看| 欧美一区二区在线不卡| 亚洲综合无码一区二区| 97久久超碰国产精品| 久久久91精品国产一区二区精品| 青娱乐精品视频在线| 在线不卡a资源高清| 亚洲国产视频a| 色婷婷国产精品久久包臀 | 一色屋精品亚洲香蕉网站| 韩国v欧美v日本v亚洲v| 精品久久久久久久久久久久包黑料| 午夜av电影一区| 欧美色男人天堂| 亚洲综合久久久| 精品视频一区二区不卡| 亚洲线精品一区二区三区| 在线免费观看日本欧美| 亚洲综合一区在线| 欧美色网站导航| 亚洲尤物视频在线| 欧美老肥妇做.爰bbww| 亚洲电影欧美电影有声小说| 日本韩国欧美国产| 天天综合网天天综合色| 7777精品伊人久久久大香线蕉 | 国产成人一级电影| 国产亚洲精品中文字幕| 国产高清精品在线| 国产精品不卡视频| 在线视频中文字幕一区二区| 日韩精品福利网| 精品成人佐山爱一区二区| 精品久久人人做人人爽| 久久99国产精品麻豆| 久久香蕉国产线看观看99| 成人免费av资源| 亚洲午夜三级在线| 日韩免费在线观看| 成人福利电影精品一区二区在线观看| 亚洲欧美日韩国产综合| 欧美伊人久久大香线蕉综合69 | 五月天激情综合| 精品国产欧美一区二区| 免费亚洲电影在线| 国产精品久久久久aaaa| 日本久久一区二区三区| 麻豆一区二区在线| 国产精品福利在线播放| 欧美伊人精品成人久久综合97 | 亚洲18色成人| 久久九九国产精品| 欧美日韩不卡一区| 国产原创一区二区| 一区二区三区精品| 久久婷婷久久一区二区三区| 色香色香欲天天天影视综合网| 日韩av成人高清| 亚洲精品中文在线观看| 精品国产乱子伦一区| 91麻豆123| 激情久久五月天| 亚洲国产综合人成综合网站| 国产欧美精品一区aⅴ影院| 在线播放国产精品二区一二区四区 | 久久精品国产精品青草| 91麻豆123| 亚洲欧美一区二区不卡| 日本乱人伦aⅴ精品| 亚洲一区二区精品3399| 波多野结衣的一区二区三区| 久99久精品视频免费观看| 欧美午夜精品理论片a级按摩| 欧美videos中文字幕| 日本亚洲三级在线| 日韩亚洲电影在线| 国产精品久久久久久久久久久免费看| 色噜噜夜夜夜综合网| 日韩黄色免费电影| 日韩免费高清视频| 国产麻豆视频精品| 不卡的看片网站| 欧美成人猛片aaaaaaa| 精品国产露脸精彩对白 | 国产精品三级久久久久三级| 一本大道久久a久久精二百| 国产精品三级av| 粉嫩高潮美女一区二区三区| 中文字幕av一区二区三区高| 成人午夜在线免费| 日本一区二区三级电影在线观看| 韩国在线一区二区| 欧美精品日韩精品| 亚洲日本va在线观看| 国产亚洲欧美色| 成人av一区二区三区| 亚洲成人中文在线| 色哟哟一区二区在线观看| 另类小说色综合网站| 国产婷婷色一区二区三区| 国产视频亚洲色图| 欧美精品久久久久久久多人混战| 色天使色偷偷av一区二区| 日韩三级免费观看| 国产精品久久三| 五月婷婷另类国产| 日韩久久一区二区| 国产精品盗摄一区二区三区| 久久精品人人做人人爽97| 欧美日韩激情一区| 欧美亚洲一区二区在线观看| av网站免费线看精品| 国产一区二区三区黄视频 | 亚洲色图视频免费播放| 欧美三级日韩三级|