標籤:des style blog http io color ar os sp
SHA系列加密,SHA512安全是安全,但位元太長了,很少有人用它加密密碼,下面我就簡單介紹一下SHA和一些變種加密(SHA512也會用進去的) 程式跟國際化接軌,都是用的UTF-8編碼格式 (如果有比我還菜的鳥寫出相同的加密方式得到的密文不同,如果要質疑的話,先把編碼看一下,不同編碼產生密文是不同的) 提供另一種思路(下期會講):在多重加密的過程中反覆變化編碼。。。自己想象去吧~ 這個是SHA-1的加密寫法,和MD5一樣的 也許有人會問,那個for迴圈怎麼沒了?我這邊用的是官方提供的方法,for迴圈那個一般只有在對內部位元組進行變形或者剛學才用的 如果你不知道我說的是什麼的話,,,,看一下這個日記,有詳解:http://user.qzone.qq.com/1054186320/blog/1407540646這個是本期練手軟體:http://pan.baidu.com/s/1sjjWqpZ public string GetSHAOne(string input)//SHA-1加密{ //創 SHA1 shaOne = SHA1.Create(); //變 byte[] shaOneBuffer = shaOne.ComputeHash(Encoding.UTF8.GetBytes(input)); //關 shaOne.Clear(); return BitConverter.ToString(shaOneBuffer).Replace("-", "").ToLower();//另一種簡單的方法} 那SHA256怎麼用呢?。。。簡單,把SHA1換成SHA256就行了,代碼如下: public string GetSHAX(string input){ //創 SHA256 shaX = SHA256.Create(); //變 byte[] shaXBuffer = shaX.ComputeHash(Encoding.UTF8.GetBytes(input)); //關 shaX.Clear(); return BitConverter.ToString(shaXBuffer).Replace("-", "").ToLower();//另一種簡單的方法} 好了,下面重點介紹一下我最新加密成果:DNTDBT加密(dnt大變態) 其實也不是我自己創出的加密了,就是把一下常用的加密我自己“人性化”的加上自己的思路,小小的變化一下,然後再重鑄了一下 也可以稱為:SHA系列綜合變異 【用到了SHA512(目前最安全的加密)】~編碼格式為 UTF-8 先談一下思路:明文——>SHA512——>Base64——>BTMD5——>BYSHA——>SHA512——>Base64——>BYSHA(40位)【這個叫加密順序還是有一些玄機的,具體自己揣測哦~】 建議站長用這種最複雜的加密方式來錄入密碼~我把代碼簡單最佳化一下,你可以再最佳化(最佳化角度:從節省資源開始) 我這邊主要是給小白看的不能最佳化過頭,不然他們肯定看不懂 代碼貼一下: public string DNTDBT(string input){ //創 SHA512 shaX = SHA512.Create(); //變+關 string newInput = GetBYSHA(GetBTMD5(GetBase64(shaX.ComputeHash(Encoding.UTF8.GetBytes(input))))); string strShax = GetBase64(shaX.ComputeHash(Encoding.UTF8.GetBytes(newInput))); shaX.Clear();//釋放一系列加密所佔的資源 return GetBYSHA(strShax);} 是不是感覺很簡單呢?咳咳,,下面才是真正的海量代碼,上面只是一個方法調用多個方法而已~~ //MD5小變異public string GetSXMD5(string input){ //創 MD5 md5 = MD5.Create(); //轉 byte[] md5buffer = md5.ComputeHash(Encoding.UTF8.GetBytes(input)); StringBuilder sbMd5 = new StringBuilder(); for (int i = md5buffer.Length - 1; i >= 0; i--) { sbMd5.Append(md5buffer[i].ToString("x2")); } //關 md5.Clear(); return sbMd5.ToString();} //SHA-1加密public string GetSHAOne(string input){ //創 SHA1 shaOne = SHA1.Create(); //變 byte[] shaOneBuffer = shaOne.ComputeHash(Encoding.UTF8.GetBytes(input)); //關 shaOne.Clear(); return BitConverter.ToString(shaOneBuffer).Replace("-", "").ToLower();//另一種簡單的方法(也可以用上面遍曆來做)} //MD5再變異--一段處理後再變成MD5(保證位元一定)public string GetBTMD5(string input){ //創 MD5 md5 = MD5.Create(); //變 byte[] md5Buffer = md5.ComputeHash(Encoding.UTF8.GetBytes(input)); ////變異開始 StringBuilder sb = new StringBuilder(); for (int i = md5Buffer.Length - 1; i >= 0; i--) { sb.Append(((int.Parse(md5Buffer[i].ToString())) - 1).ToString("x2")); } //關 md5.Clear(); //重新加固 return GetSXMD5(sb.ToString());} //Base64加密(之所以選他是因為他的地址中有各種特殊符號,多重破解很艱難的)public string GetBase64(byte[] inputBuffer){ return Convert.ToBase64String(inputBuffer);} //SHA-1小變異public string GetBYSHA(string input){ //創 SHA1 shaOne = SHA1.Create(); //變 byte[] shaOneBuffer = shaOne.ComputeHash(Encoding.UTF8.GetBytes(input)); string newinput = GetBase64(shaOneBuffer); byte[] shaNewBuffer = shaOne.ComputeHash(Encoding.UTF8.GetBytes(newinput)); //關 shaOne.Clear(); return BitConverter.ToString(shaNewBuffer).Replace("-", "").ToLower();} 咳咳,看到這說明你有還沒有被嚇到,或者說你直接一目千行了,好吧,逆天有個習慣,講個技術點就喜歡發個大絕招,我也編了個軟體給你們參考 源碼如下:http://pan.baidu.com/s/1c0o03QS 如果你Base64加密不太懂的話,就看這篇文章:http://user.qzone.qq.com/1054186320/blog/1409210604 如果你MD5系列還是不太懂的話,就看這篇文章:http://user.qzone.qq.com/1054186320/blog/1407540646如果你表徵圖布局之類的不會的話,就看這篇文章:http://user.qzone.qq.com/1054186320/blog/1396659636
如果你C#學的還是有點那個啥的話,送你點資源:http://user.qzone.qq.com/1054186320/blog/1404357056 淡淡的飄過~下次會弄個更複雜的加密~先閃~~~
本期推薦: CodeSmith Generator 7.0.2 下一期:打造萬能圖片轉換器
小白C#表單系列-09.SHA系列加密