首页 > 代码库 > 小白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
这个是本期练手软件: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系列加密