ASP.NET中几种加密方法

下面就是ASP.NET中几种加密方法。加密算法有两种,也就是上面提到的MD5和SHA1,这里我举的例子是以MD5为例,SHA1大致相同,只是使用的类不一样。

MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由Mit Laboratory for Computer Science和Rsa data security inc的Ronald l. rivest开发出来,经md2、md3和md4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一 个任意长度的字节串变换成一定长的大整数)。不管是md2、md4还是md5,它们都需要获得一个随机长度的信息并产生一个128位的信息摘要。

加密哈希函数将任意长度的二进制字符串映射为固定长度的小型二进制字符串。加密哈希函数有这样一个属性:在计算上不大可能找到散列为相同的值的两个不同的
输入;也就是说,两组数据的哈希值仅在对应的数据也匹配时才会匹配。数据的少量更改会在哈希值中产生不可预知的大量更改。所以你很难从加密后的文字中找到
蛛丝马迹。

SHA1的全称是Secure Hash Algorithm(安全哈希算法)

MD5 算法的哈希值大小为128位。而SHA1 算法的哈希值大小为160位。两种算法都是不可逆。

虽说2004年8月17日的美国加州圣巴巴拉的国际密码学会议(Crypto’2004)上,来自中国山东大学的王小云教授做了破译MD5、HAVAL-
128、
MD4和RIPEMD算法的报告,公布了MD系列算法的破解结果。宣告了固若金汤的世界通行密码标准MD5的堡垒轰然倒塌,引发了密码学界的轩然大波。但
是我觉得对于我们做普通的软件来说,这个加密安全程度已经足够使用了。

我们平常用的最多的无非就是加密用户密码,把加密好的密码存储到数据库中,进行密码比较的时候,把用户输入的密码再进行加密,然后与数据库中的密文进行比较。至于ASP.net类中是如何实现加密算法的,这个我们不需要关心,会用就行了。

下面就是ASP.NET中几种加密方法。加密算法有两种,也就是上面提到的MD5和SHA1,这里我举的例子是以MD5为例,SHA1大致相同,只是使用的类不一样。

MD5 相关类:

System.Security.Cryptography.MD5

System.Security.Cryptography.MD5CryptoServiceProvider()

System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strSource, "MD5")

SHA1相关类:

1 System.Security.Cryptography.SHA1
2
3 System.Security.Cryptography.SHA1CryptoServiceProvider()
4
5 System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strSource, "SHA1")  

方法如下:

/**////
 /// 方法一:通过使用 new 运算符创建对象
///
 /// 需要加密的明文
 /// 返回16位加密结果,该结果取32位加密结果的第9位到25位
public string Get_MD5_Method1(string strSource)
 {
 //new
  System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();

  //获取密文字节数组
  byte[] bytResult = md5.ComputeHash(System.Text.Encoding.Default.GetBytes(strSource));

  //转换成字符串,并取9到25位
  string strResult = BitConverter.ToString(bytResult, 4, 8);
  //转换成字符串,32位
  //string strResult = BitConverter.ToString(bytResult);

  //BitConverter转换出来的字符串会在每个字符中间产生一个分隔符,需要去除掉
  strResult = strResult.Replace("-", "");
  return strResult;
 }

 /**////
 /// 方法二:通过调用特定加密算法的抽象类上的 Create 方法,创建实现特定加密算法的对象。
 ///
 /// 需要加密的明文
 /// 返回32位加密结果
 public string Get_MD5_Method2(string strSource)
 {
  string strResult = "";

  //Create
  System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create();

  //注意编码UTF8、UTF7、Unicode等的选择
  byte[] bytResult = md5.ComputeHash(System.Text.Encoding.UTF8.GetBytes(strSource));

  //字节类型的数组转换为字符串
  for (int i = 0; i < bytResult.Length; i++)
  {
   //16进制转换
   strResult = strResult + bytResult[i].ToString("X");
  }
  return strResult;
 }

 /**////
 /// 方法三:直接使用HashPasswordForStoringInConfigFile生成
 ///
 /// 需要加密的明文
 /// 返回32位加密结果
 public string Get_MD5_Method3(string strSource)
 {
  return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strSource, "MD5");
 }

这些加密函数都是在服务器端执行,也就是说,当用户输入密码 后,从客户端到服务器端传输时,用户的密码没有任何保护,很危险。银行的做法是在客户端安装ActiveX控件,在客户端就把一些重要信息进行加密,再发 送。这个偶就不会拉,很希望能学习学习做这种ActiveX控件。

时间: 2024-07-30 20:30:33

ASP.NET中几种加密方法的相关文章

iOS 几种加密方法

iOS常见的几种加密方法 普通加密方法是讲密码进行加密后保存到用户偏好设置中 钥匙串是以明文形式保存,但是不知道存放的具体位置 1.base64加密 base64 编码是现代密码学的基础 基本原理: 原本是 8个bit 一组表示数据,改为 6个bit一组表示数据,不足的部分补零,每 两个0 用 一个 = 表示 用base64 编码之后,数据长度会变大,增加了大约 1/3 左右.(8-6)/6可进行反向解密 Xcode7.0 之后出现的 编码有个非常显著的特点,末尾有个 = 号 将文件进行加密 /

asp.net中导出Execl的方法

一.asp.net中导出Execl的方法: 在 asp.net中导出Execl有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址 输出在浏览器上:一种是将文件直接将文件输出流写给浏览器.在Response输出时,\t分隔的数据,导出 execl时,等价于分列,\n等价于换行. 1.将整个html全部输出execl 此法将html中所有的内容,如按钮,表格,图片等全部输出到Execl中.   Response.Clear();       Response.Buffer=  

ASP.NET 中DataGrid item 绑定方法

<Columns> <asp:TemplateColumn HeaderImageUrl="../../Images/delete.GIF"> <HeaderStyle Wrap="False" Width="20px"></HeaderStyle> <ItemTemplate> <asp:CheckBox runat="server" ID="cbx

在 ASP.NET 中使用 jQuery.load() 方法

今天就让我们看看在 ASP.NET 中使用 jQuery.load() 方法来调用 ASP.NET 的方法,实现无刷新的加载数据. 使用 jQuery 的朋友应该知道可以使用 jQuery.load() 加载静态页面,并可指定要加载的区域,如在"test.html"中有如下内容: <div id="show"> <a href="http://www.jquery001.com/">jQuery001</a>

ASP.net中网站访问量统计方法代码(在线人数,本月访问,本日访问,访问流量,累计访问)

一.建立一个数据表IPStat用于存放用户信息 我在IPStat表中存放的用户信息只包括登录用户的IP(IP_Address),IP来源(IP_Src)和登录时间 (IP_DateTime),些表的信息本人只保存一天的信息,如果要统计每个月的信息则要保存一个月.因为我不太懂对数据日志的操作,所以创建此表,所 以说我笨吧,哈哈. 二.在Global.asax中获取用户信息 在Global.asax的Session_Start即新会话启用时获取有关的信息,同时在这里实现在线人数.访问总人数的增量统计

在asp.net 中生成PDF的方法

近期要用asp.net 2.0生成PDF,看了下书,查了下资料,发现可以有组件帮得上忙,可以下载itextsharp(https://sourceforge.net/projects/itextsharp)下载,然后在工程中引用该控件,举例子如下 1  datatable 的内容转换为PDF      首先,建立一个datatable转换为pdf的方法如下 using iTextSharp;using iTextSharp.text;using iTextSharp.text.pdf;using

ASP.NET中使用Server.Transfer()方法在页间传值 实例

以下代码在VS2008中测试通过 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="WebForm1.aspx.cs" Inherits="WebForm1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3

Java中常用的加密方法(JDK)

加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容.大体上分为双向加密和单向加密,而双向加密又分为对称加密和非对称加密(有些资料将加密直接分为对称加密和非对称加密). 双向加密大体意思就是明文加密后形成密文,可以通过算法还原成明文.而单向加密只是对信息进行了摘要计算,不能通过算法生成明文,单向加密从严格意思上说不能算是加密的一种,应该算是摘要算法吧.具体区分可以参考: (本人解释不清呢 …… ) http://secur

Objective-C中一种消息处理方法performSelector

Objective-C中调用函数的方法是“消息传递”,这个和普通的函数调用的区别是,你可以随时对一个对象传递任何消息,而不需要在编译的时候声明这些方法.所以Objective-C可以在runtime的时候传递人和消息. 首先介绍两个方法 SEL和@selector 根据AppleObjective-C Runtime Reference官方文档这个传递消息的函数就是 id objc_msgSend(id theReceiver, SEL theSelector, …) theReceiver是接