Enterprise Library 之数据加密

来源:互联网 发布:mac安装win7 u盘 编辑:程序博客网 时间:2024/04/28 07:27

 

Crytography Application Block 是企业库中提供了加密的,两种加密方法:
Hash 和 Symmetric ,二者的区别是,Hash加密算法是不可以解密的,而Symmetric既可加密又可以解密。
当然它也支持自定义的加密方法,Enterprise Library 3.0提供了对加密算法的修改和扩展功能。

1、它帮助我们开发人员很轻松的解决应用程序中的加密问题。
2、它可以帮助我们统一整个企业的应用程序的统一性。
3、Crytography Application Block是可扩展的,我们可以用自己写的加密算法来对应用程序进行加密。

首先我们创建一个web站点,添加一个web.config文件,添加引用.
如图00
然后我们打开常用的Enterprise Library工具,添加节点如下图

选择一个加密算法

之后出现 Cryptographic Key Wizard 的对话框,如图:

我们选择Create a new Key,这时候就出现了让我们输入类似注册码之类的对话框,点击Generate按钮
生成一组数(不了解是干什么的,有知道的评论下.)

然后点 Next,选择我们建立的Key File的保存路径.

再Next一下,这时让我们选择加密的模式,如图:

加密模式有两种,User mode 和 Machine mode
使用Machine mode的情况:
1、当你的应用程序运行在专门的服务器上,并且这台服务器上没有其他的应用程序;
2、你的服务器上同时运行了多个应用程序,你希望这些应用程序能够共享一些敏感的信息。
使用User mode的情况:
    如果你的应用程序运行在多程序的环境下,但你不希望你的应用程序中的敏感数据受到其他应用程序的影响或被其他应用程序访问;在这种情况下,每个应用程序的资源(例如:文件、数据库等)之间都是相互独立,互不影响的。
注意:如果你选择了DPAPI加密算法,然后再使用machine mode的话,那么加密后的数据只在当前的机器上有效,所以你必须为每台机器生成一个加密的数据。
点 Finish.我们配置完了.
下来我们看后台怎么调用:
项目引用如下图:

后台代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.Common;
using System.Data.SqlClient;
using Microsoft.Practices.EnterpriseLibrary.Security.Cryptography;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string name = Cryptographer.EncryptSymmetric("DESCryptoServiceProvider", "sohu");
        Response.Write("sohu字符串加密后为:" + name + "<br>");
        string rname = Cryptographer.DecryptSymmetric("DESCryptoServiceProvider", name);
        Response.Write( name + "字符串解密密后为:" + rname + "<br>");
    }
}
下列代码是读取Hash加密:
byte[] valueToHash = (new UnicodeEncoding()).GetBytes("password");
byte[] generatedHash = Cryptographer.CreateHash("hashProvider", valueToHash);
下列代码是比较Hash加密值来判断是否变化:
byte[] ovalue = (new UnicodeEncoding()).GetBytes("sohu");
//创建ovalue的Hash值
byte[] generatedHash = Cryptographer.CreateHash("hashProvider", ovalue);
//比较数据和它的Hash值,如果数据没有改变则返回true,改变了就返回false
bool result = Cryptographer.CompareHash("hashProvider", ovalue, generatedHash);
//改变原来数据的值,再进行比较
ovalue = (new UnicodeEncoding()).GetBytes("sohu1");
bool result1 = Cryptographer.CompareHash("hashProvider", ovalue, generatedHash); 

原创粉丝点击