標籤:style blog http io color ar os sp java
啥是Base64呢?怎麼說呢,這個加密比較常用,想想迅雷的,想想QQ旋風和快車。他們就是用的這個Base64來加密地址,現在網上很多位址解析器,原理就是反Base64。
Base64編碼的思想是是採用64個基本的ASCII碼字元對資料進行重新編碼。它將需要編碼的資料拆分成位元組數組。以3個位元組為一組。按順序排列24 位元據,再把這24位元據分成4組,即每組6位。再在每組的的最高位前補兩個0湊足一個位元組。這樣就把一個3位元組為一組的資料重新編碼成了4個位元組。當所要編碼的資料的位元組數不是3的整倍數,也就是說在分組時最後一組不夠3個位元組。這時在最後一組填充1到2個0位元組。並在最後編碼完成後在結尾添加1到2個 “=”。看這個例子(例子)
逆天只是個小白,小白嘛高深的就不會,就弄弄簡單的咯~就直接用他預設的編碼庫了,就不自己自訂了,如果你想弄弄自訂的就看看上面的例子吧~
我們進入正題,單獨一個base64沒什麼意思,發個說說就O了,就算對MD5系列加密小工具的拓展吧(當時說的思路拓展),先說下base64怎麼加密和解密吧: 加密: Convert.ToBase64String(baseBuffer); //給他一個byte[ ] 返回一個字串 解密: byte[] buffer = Convert.FromBase64String(txtString.Text); //給他一個字串,返回一個byte[ ] 是不是無語了,就這麼簡單,其實逆天今天是聽朋友提了一下,Java現在是Base64+MD5結合,我就想了,反正java的都有了,哥也弄個C#版本的(文法上還是有些區別的【目測:Java MD5不要一個一個的ToString("X2");】)。 下面貼個代碼: public void GetMD5Base(){ MD5 md5 = MD5.Create(); string input = txtString.Text; byte[] buffer = Encoding.UTF8.GetBytes(input); //字串轉成byte[ ]數組 byte[] newBuffer = md5.ComputeHash(buffer, 0, buffer.Length); StringBuilder sb = new StringBuilder(); for (int i = 0; i < newBuffer.Length; i++) { sb.Append(newBuffer[i].ToString("X2")); } byte[] baseBuffer = Encoding.UTF8.GetBytes(sb.ToString()); //把轉碼後的MD5 32位密文轉成byte[ ] txtNeed.Text = Convert.ToBase64String(baseBuffer); //這個要注意,不要在newbuffer就轉,你解密的時候會亂碼(有時候)} 解碼就簡單了:(本程式加密後的密文,在解密時只能得到MD5) public void GetMD5(){ try { byte[] buffer = Convert.FromBase64String(txtString.Text); txtNeed.Text = Encoding.UTF8.GetString(buffer); } catch { MessageBox.Show("請輸入正確的Base64碼"); }} 貼個源碼和軟體吧:http://pan.baidu.com/s/1dDjD01z本期推薦:Reflector8.3 Telerik JustDecomp 下一期:SHA系列加密
小白C#表單系列-08小議Base64+MD5加密