首页 > 代码库 > 小白C#窗体系列-09.SHA系列加密
小白C#窗体系列-09.SHA系列加密
SHA系列加密,SHA512安全是安全,但位数太长了,很少有人用它加密密码,下面我就简单介绍一下SHA和一些变种加密(SHA512也会用进去的)
程序跟国际化接轨,都是用的UTF-8编码格式
(如果有比我还菜的鸟写出相同的加密方式得到的密文不同,如果要质疑的话,先把编码看一下,不同编码产生密文是不同的)
提供另一种思路(下期会讲):在多重加密的过程中反复变化编码。。。自己想象去吧~
这个是SHA-1的加密写法,和MD5一样的
也许有人会问,那个for循环怎么没了?我这边用的是官方提供的方法,for循环那个一般只有在对内部字节进行变形或者刚学才用的
如果你不知道我说的是什么的话,,,,看一下这个日记,有详解:http://user.qzone.qq.com/1054186320/blog/1407540646 那SHA256怎么用呢?。。。简单,把SHA1换成SHA256就行了,代码如下: 代码贴一下: 是不是感觉很简单呢?咳咳,,下面才是真正的海量代码,上面只是一个方法调用多个方法而已~~ 淡淡的飘过~下次会弄个更复杂的加密~先闪~~~
这个是本期练手软件: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();//另一种简单的方法
}
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
如果你C#学的还是有点那个啥的话,送你点资源:http://user.qzone.qq.com/1054186320/blog/1404357056
本期推荐: CodeSmith Generator 7.0.2 下一期:打造万能图片转换器
小白C#窗体系列-09.SHA系列加密
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。