c# 实现MD5,SHA1,SHA256,SHA512等常用加密算法

本文介绍了MD5和SHA1两种加密算法的基本原理及应用,包括如何在Microsoft Visual Studio 2005中使用C#语言实现这两种算法对字符串进行加密。同时提及了这两种算法的安全性问题以及替代方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在很多电子商务和社区应用中,我们都要存放很多的客户的资料,其中包括了很多的隐私信息和客户不愿被别人看到的信息,当然好有客户执行各种操作的密码,此时就需要对客户的信息进行加密再存储,目前有两种比较好的加密算法:MD5和sha1。

这两种加密算法都属于散列加密技术。所谓散列加密就是无论输入的字符串是什么,有多大,加密后都将变成唯一的定长的加密串。

首先介绍一下MD5,MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2、MD3和MD4发展而来。Message-Digest泛指字节串(Message)的Hash变换,就是把一个任意长度的字节串变换成一定长的大整数。请注意是“字节串”而不是“字符串”,是因为这种变换只与字节的值有关,与字符集或编码方式无关。MD5将任意长度的“字节串”变换成一个128bit的大整数,并且这是一个不可逆的变换过程,要破解只能穷举,难度很大,理论上8位的密码组合有(26字母+10数字+21常用英文符号)的8次方种可能,以现在比较好的机器机器要算上一年多。MD5加密后的密串长度有16位和32位两种。不过最近MD5听说被破解了(听说还是被我们的国人破掉的,佩服啊!),能很快碰撞到密码,不过破解机还没有流传出来。

MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。举个例子,你将一段话写在一个叫readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。

在Microsoft Visual Studio 2005对MD5加密算法有了很好的支持,使用起来非常简单,下面是在C#中使用MD5加密字符串的例子:

public string md5(string str,int code)
{
    if(code==16) //16位MD5加密(取32位加密的9~25字符)
    {
        return System.Web.Security.FormsAuthentication.

               HashPasswordForStoringInConfigFile(str,"MD5").ToLower().Substring(8,16) ;
    }
    else//32位加密
    {
        return System.Web.Security.FormsAuthentication.

               HashPasswordForStoringInConfigFile(str,"MD5").ToLower();
    }
}

使用sha1算法加密后的密串长度有40位,相对更安全一些。

在Microsoft Visual Studio 2005对sha1的使用也很简单,下面是在C#中使用sha1加密字符串的例子:

public string sha1(string str)
       
    return System.Web.Security.FormsAuthentication.

           HashPasswordForStoringInConfigFile(str, "sha1").ToLower();        
}

不过最后还有一个不幸的消息,就是sha1算法已经被破解,国家标准和科技学院(National Institute of Standards and Technology)已经推荐使用sha-256或者sha-512算法。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值