如果你不知道我说的是什么的话,,,,看一下这个日记,有详解:
http://user.qzone.qq.com/1054186320/blog/1407540646
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();
}
咳咳,看到这说明你有还没有被吓到,或者说你直接一目千行了,好吧,逆天有个习惯,讲个技术点就喜欢发个大绝招,我也编了个软件给你们参考