国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

強(qiáng)力重置ASP.NET membership加密后的密碼![轉(zhuǎn)]

2019-11-17 01:39:21
字體:
供稿:網(wǎng)友

強(qiáng)力重置asp.net membership加密后的密碼![轉(zhuǎn)]

公司網(wǎng)站的用戶管理采用的是ASP.NET內(nèi)置的membership管理,在web.config文件中的密碼格式配置是加密了的,passWordFormat="Hashed",這樣在用戶注冊(cè)的時(shí)候存到數(shù)據(jù)庫中的密碼都是加密了的,如果你忘記密碼了要找回密碼的時(shí)候必須要記得注冊(cè)時(shí)寫的密碼問題答案,可是如果密碼問題答案也忘記的話。。。因?yàn)槊艽a是加了密的,所以也不知道他的密碼的生成規(guī)律,直接改數(shù)據(jù)庫也不懂怎么改。。。這個(gè)問題在以前的時(shí)候碰到過,當(dāng)時(shí)特意上網(wǎng)搜索了一下,竟然沒有發(fā)現(xiàn),不知道是不是我的關(guān)鍵字輸入錯(cuò)誤還是怎么的,今天上臺(tái)灣的論壇逛成人版塊的時(shí)候發(fā)現(xiàn)論壇中的編輯版塊有篇文章是教你怎么樣在不記得密碼,利用了membership其中的一個(gè)存儲(chǔ)過程,廢話少說,亮code:

C#代碼收藏代碼
  1. usingSystem;
  2. usingSystem.Collections.Generic;
  3. usingSystem.Linq;
  4. usingSystem.Web;
  5. usingSystem.Web.UI;
  6. usingSystem.Web.UI.WebControls;
  7. usingSystem.Web.Configuration;
  8. usingSystem.Data.SqlClient;
  9. usingSystem.Web.Security;
  10. usingSystem.Data;
  11. publicpartialclassResetPassword:System.Web.UI.Page
  12. {
  13. applicationName",Membership.ApplicationName));
  14. //===要重置密碼的用戶賬號(hào)===
  15. cmd.Parameters.Add(newSqlParameter("@UserName",username));
  16. //===加密過的密碼===
  17. cmd.Parameters.Add(newSqlParameter("@NewPassword",password));
  18. //===密碼加密密鑰(一定和使用加密密碼的密鑰一樣,不要再重新產(chǎn)生)===
  19. cmd.Parameters.Add(newSqlParameter("@PasswordSalt",salt));
  20. //===重置密碼的時(shí)間===
  21. cmd.Parameters.Add(newSqlParameter("@CurrentTimeUtc",DateTime.Now));
  22. //===密碼加密的格式(此時(shí)是Hash1,注意傳入?yún)?shù)是int型態(tài)。)===
  23. cmd.Parameters.Add(newSqlParameter("@PasswordFormat",Membership.Provider.PasswordFormat.GetHashCode()));
  24. //===宣告一個(gè)可以接收回傳值得參數(shù)===
  25. SqlParameterreturnValue=newSqlParameter();
  26. returnValue.ParameterName="returnValue";
  27. returnValue.Direction=ParameterDirection.ReturnValue;
  28. cmd.Parameters.Add(returnValue);
  29. //===執(zhí)行預(yù)存程序===
  30. cmd.ExecuteNonQuery();
  31. conn.Close();
  32. //===檢查重置密碼是否成功===
  33. if(returnValue.Value.ToString()=="0")
  34. Response.Write("重置密碼成功!!");
  35. else
  36. Response.Write("重置密碼失敗!!");
  37. }
  38. ///<summary>
  39. ///密碼加密鑰
  40. ///</summary>
  41. ///<returns></returns>
  42. publicstringGenerateSalt()
  43. {
  44. byte[]data=newbyte[0x10];
  45. newSystem.Security.Cryptography.RNGCryptoServiceProvider().GetBytes(data);
  46. returnConvert.ToBase64String(data);
  47. }
  48. ///<summary>
  49. ///哈希密碼加密(不可還原)
  50. ///</summary>
  51. ///<paramname="s">原始字符串</param>
  52. ///<paramname="saltKey">Salt加密字符串</param>
  53. ///<paramname="hashName">加密格式(md5,SHA1,SHA256,SHA384,SHA512.)</param>
  54. ///<returns>加密過的密碼</returns>
  55. publicstringEncryptToHashString(strings,stringsaltKey,stringhashName)
  56. {
  57. byte[]src=System.Text.Encoding.Unicode.GetBytes(s);
  58. byte[]saltbuf=Convert.FromBase64String(saltKey);
  59. byte[]dst=newbyte[saltbuf.Length+src.Length];
  60. byte[]inArray=null;
  61. System.Buffer.BlockCopy(saltbuf,0,dst,0,saltbuf.Length);
  62. System.Buffer.BlockCopy(src,0,dst,saltbuf.Length,src.Length);
  63. System.Security.Cryptography.HashAlgorithmalgorithm=System.Security.Cryptography.HashAlgorithm.Create(hashName);
  64. inArray=algorithm.ComputeHash(dst);
  65. returnConvert.ToBase64String(inArray);
  66. }
  67. }

這樣就把密碼重置為123456了剛剛在做membership的測試的時(shí)修實(shí)然想到,數(shù)據(jù)表aspnet_Membership中的Password字段是存儲(chǔ)密碼的,F(xiàn)ormatPassword字段是表示密碼的存儲(chǔ)格式的,0是明碼,1是加密過的,假如我在數(shù)據(jù)庫中把已經(jīng)加密了的密碼的FormatPassword改為0,然后Password改成123456, 測試,哈哈,竟然也能登陸了!!!


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 怀安县| 陆良县| 辽阳县| 当涂县| 沁水县| 泰顺县| 洛浦县| 乌海市| 墨竹工卡县| 安义县| 静乐县| 广河县| 五常市| 轮台县| 安康市| 西乌珠穆沁旗| 奉新县| 金秀| 丰镇市| 三都| 明溪县| 忻城县| 鹿泉市| 凉城县| 江永县| 资阳市| 涿鹿县| 安丘市| 仙居县| 灯塔市| 应用必备| 华亭县| 南华县| 湟中县| 阳西县| 浠水县| 内江市| 定结县| 长武县| 米脂县| 石城县|