首页 > 代码库 > 小白C#窗体系列-08小议Base64+MD5加密
小白C#窗体系列-08小议Base64+MD5加密
啥是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[ ]
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");】)。
下面贴个代码: 贴个源码和软件吧:http://pan.baidu.com/s/1dDjD01z
本期推荐:Reflector8.3 Telerik JustDecomp 下一期:SHA系列加密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码"); }
}
小白C#窗体系列-08小议Base64+MD5加密
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。