.NET加密方法收集

来源:互联网 发布:检测报告单数据怎么看 编辑:程序博客网 时间:2024/05/23 19:17

NET中MD5加密方法怎么用??在哪个名称空间下??

在这个命名空间using System.Security.Cryptography;
具体的代码是:
         public static Byte[] ConvertStringToByteArray(String s)
  {
   return (new UnicodeEncoding()).GetBytes(s);
  }
         byte[] byte_pwd = ConvertStringToByteArray(pwd);加密前的密码
         byte[] result_pwd = ((HashAlgorithm) CryptoConfig.CreateFromName("MD5")).ComputeHash(byte_pwd);
               string pwd(加密后的密码)= BitConverter.ToString(result_pwd);

1。nd5加密示例-------------------------------------------------------------------------------------

using System;

namespace Directory
{
 /// <summary>
 /// MD5Encode 的摘要说明。
 /// </summary>
 public class MD5Encode
 {
  public string Encode(string SourceString)
  {
   string Result=System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(SourceString,"MD5");
   return Result;
  }
 }
}

2。使用散列算法对数据进行加密 --------------------------------------------------------------

大多数开发人员使用数据库存储密码。但是,在数据库中查找用户数据的人员也能够看到这些密码。将密码以明文的方式存储在数据库中,是很不安全的。你可以使用散列算法对密码进行加密,然后再将其存储在数据库中。用户输入密码后,你可以再次使用散列算法对其进行解密,然后将其与存储在数据库中的散列进行比较。

.Net开发人员可以使用多种加密算法,最常用的是 SHA1 和 MD5。本文将介绍在如何使用MD5算法对密码进行加密。

代码很简单:

using System.Security.Cryptography;

  public string PwdEncrypt(string Pwd)  //密码加密
  {
   MD5 md5=new MD5CryptoServiceProvider();
   byte[] data=System.Text.Encoding.Default.GetBytes(Pwd );
   byte[] md5data=md5.ComputeHash(data);
   
   md5.Clear();
   string Str="";

   for (int i=0;i<md5data.Length-1;i++)
   {
    Str+=md5data[i].ToString("x").PadLeft(2,'0');
   }

   return Str;
  }

加密后的字符串看起来也与原始输入相去甚远。这些散列算法对于创建没有任何意义的密码来说非常有用,也使其它人很难猜出这些密码。使用散列算法对原始密码加密后将无法再恢复。

在散列中添加一些“盐”值

到目前为止,散列算法暴露出来的问题之一是,如果两个用户碰巧使用相同的密码,那么散列值将完全相同。如果黑客看到存储密码的表格,会从中找到规律并明白很可能是使用了常见的词语,然后黑客会开始词典攻击以确定这些密码。要确保任何两个用户密码的散列值都不相同,一种方法是在加密密码之前,在每个用户的密码中添加一个唯一的值。这个唯一值称为“盐”值。在进行此操作时,需要确保将使用的盐值存储为用户记录的一部分。如果使用表格存储用户 ID 和密码,建议使用不同的表格来存储盐值。这样,即使数据库泄漏,盐值也可以提供一层额外的安全保护。

在用户密码中添加盐值的方法有多种。最简单的方法是摘取用户的某些信息(例如姓、名、电子邮件地址或员工 ID)并将其添加到用户密码中,然后再进行加密。这种方法的缺点是,因为需要存储盐值,所以如果黑客找到该值,将会对你所做的一切操作了如指掌。当然,黑客需要花费额外的时间来破解盐值,但这对黑客来说简直是易如反掌。

另外一种方法是使用 .NET Framework 类 RNGCryptoServiceProvider 创建一个随机的数字字符串。RNG 表示随机数生成器。该类可以创建一个任意长度的随机字节数组。可以使用此随机字节数组作为散列算法的盐值。要采用这种方法,必须安全地存储该盐值。

有关加密的详细信息,查阅微软的“Microsoft .NET 中的简化加密”。
http://www.microsoft.com/china/msdn/archives/library/dnnetsec/html/cryptosimplified.asp#cryptogr_topic3

3。又一个md5加密----------------------------------------------------------------------

public static string Encrypt(string Password,int Format)
  {
   string str = "";
   switch(Format)
   {
    case 0:
     str = FormsAuthentication.HashPasswordForStoringInConfigFile(Password,"SHA1");
     break;
    case 1:
     str = FormsAuthentication.HashPasswordForStoringInConfigFile(Password,"MD5");
     break;
   }
   return str;
  }

 
原创粉丝点击