密碼加密在寫登入程式的時候常常會用到。
不過不常寫的話又容易忘,所以在這邊來做一個紀錄。
如果只是要簡單的加密的話,如下:
加密完之後,字串就會變成這樣:
81FE8BFE87576C3ECB22426F8E57847382917ACF
下面一個是稍微複雜一點的加密方式:
加密完之後,可以看到跟上面簡單加密後的密碼不一樣了。
相較於使用System.Web.Security進行加密,若撰寫類別者,
System.Security.Cryptography亦提供相關功能:
不過不常寫的話又容易忘,所以在這邊來做一個紀錄。
如果只是要簡單的加密的話,如下:
string Password = "abcd"; //假設密碼是abcd
//使用FormsAuthentication.HashPasswordForStoringInConfigFile方法,
//第一個參數是要加密的字串,第二個參數是加密的演算法。
Password = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(Password, System.Web.Configuration.FormsAuthPasswordFormat.SHA1.ToString());
加密完之後,字串就會變成這樣:
81FE8BFE87576C3ECB22426F8E57847382917ACF
下面一個是稍微複雜一點的加密方式:
string Password = "abcd";
//密碼編譯亂數產生器
System.Security.Cryptography.RNGCryptoServiceProvider rng
=new System.Security.Cryptography.RNGCryptoServiceProvider();
byte[] buffer = new byte[15];
//將產生的密碼亂數填入byte[]陣列
rng.GetBytes(buffer); //
//將陣列轉成字串
string shadow= Convert.ToBase64String(buffer);
//原輸入密碼abcd加上salt字串,再進行加密動作
Password = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(Password + shadow, "sha1");
加密完之後,可以看到跟上面簡單加密後的密碼不一樣了。
相較於使用System.Web.Security進行加密,若撰寫類別者,
System.Security.Cryptography亦提供相關功能:
string dataCrypted = "";
//實體化 myHash
System.Security.Cryptography.SHA1 myHash =
System.Security.Cryptography.SHA1.Create();
byte[] dataBytes = Encoding.UTF8.GetBytes(dataUnencrypt);
//將產生的 hash 填入byte[]陣列
myHash.ComputeHash(dataBytes);
//將myHash轉成字串
dataCrypted = BitConverter.ToString(myHash.Hash).Replace("-", "");
沒有留言:
張貼留言