微软企业库5.0学习笔记(八)

本章介绍的是企业库加密应用程序模块Cryptographyproviders中为对称加密配置Key文件的3种方式:

  1. create a new key  : 使用一串字符串作为Key,然后通过加密保存到一个Key文件中.
  2. use an existing DPAPI-protected key file  : 使用一个现有的Key文件进行配置.
  3. import a password-protected key file   : 对导出的Key文件再进行一次Password加密.

废话少说,现在就开始看看如何使用它们吧:

 ProjectDemoDownload:

一.  Create a new key 

  1.运行EntLibConfig.exe,选择Blocks菜单 ,单击 Add CryptographySettings .

微软企业库5.0学习笔记(八)_第1张图片

      2.点击symmetriccryptography provider  区块右上角的加号按钮,然后点击 Add Symmetric Cryptography Providers,在弹出的加密算法中任意选择一个:

    微软企业库5.0学习笔记(八)_第2张图片

        3.在弹出的Key文件生成方案中,我们选择第一个Create a new key,点击Next:

      微软企业库5.0学习笔记(八)_第3张图片

          4.下一步是要你输入Key码,你可以自己手动输入一串自己定制好的Key码,也可以点击右下角的Generate按钮,让计算机为你自动生成一串Key码,在此我是直接点击Generate按钮生成的Key码,然后点击Next:

        微软企业库5.0学习笔记(八)_第4张图片

            5.接着是选择Key文件导出的目录,这里我先保存成桌面的test.key文件,设置好后点击Next:

            微软企业库5.0学习笔记(八)_第5张图片

             

             

             

              6.接着是选择模式,有User模式和Machine模式:   

                (1)User模式:每个应用程序有自己的唯一标识,无法访问其他应用程序的资源.
                (
            2)Machine模式:加密的文件只能使用在本电脑上使用,也就是说用这个模式,在其他电脑你还需要重新生成一个Key文件.
                在本地调试哪个模式都无所谓,我们就选择User模式吧:

            微软企业库5.0学习笔记(八)_第6张图片

              7.再点击Finish,就完成配置啦:

            微软企业库5.0学习笔记(八)_第7张图片

              桌面导出的Key文件:

                8.点击 File 菜单,单击 Save,保存为一个App.config文件,可以先保存到桌面,之后要用到它. 用记事本打开App.config,可以看到如下内容:

                 

                代码
                   
                   
                < configuration >

                < configSections >

                < section name ="securityCryptographyConfiguration" type ="Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.Configuration.CryptographySettings,Microsoft.Practices.EnterpriseLibrary.Security.Cryptography, Version=5.0.414.0,Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission ="true" />

                </ configSections >

                < securityCryptographyConfiguration >

                < symmetricCryptoProviders >

                < add name ="RC2CryptoServiceProvider" type ="Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.SymmetricAlgorithmProvider,Microsoft.Practices.EnterpriseLibrary.Security.Cryptography, Version=5.0.414.0,Culture=neutral, PublicKeyToken=31bf3856ad364e35"

                algorithmType
                ="System.Security.Cryptography.RC2CryptoServiceProvider,mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"

                protectedKeyFilename
                ="C:\Users\Administrator\Desktop\test.key"

                protectedKeyProtectionScope
                ="CurrentUser" />

                </ symmetricCryptoProviders >

                </ securityCryptographyConfiguration >

                </ configuration >

                 

                  9.要使用缓存应用程序模块, 需要导入相应的Dll文件,在此我们要导入的是Microsoft.Practices.EnterpriseLibrary.Caching.dll ,将App.config文件添加到项目中,并添加Microsoft.Practices.EnterpriseLibrary.Security.Cryptography引用:

                  微软企业库5.0学习笔记(八)_第8张图片

                   

                  微软企业库5.0学习笔记(八)_第9张图片

                   

                    添加引用:

                   

                    
                    
                  using Microsoft.Practices.EnterpriseLibrary.Security.Cryptography;

                   

                    10.测试:

                     

                      
                      
                    using System;
                    using System.Collections.Generic;
                    using System.Linq;
                    using System.Text;

                    using Microsoft.Practices.EnterpriseLibrary.Security.Cryptography;

                    namespace test
                    {
                    class Program
                    {
                    static void Main( string [] args)
                    {
                    string Encrypt = Cryptographer.EncryptSymmetric( " RC2CryptoServiceProvider " , " HuangCong " );

                    Console.WriteLine(
                    " 密文: " + Encrypt);

                    Console.WriteLine(
                    " ------------------------------------------------ " );

                    Encrypt
                    = Cryptographer.DecryptSymmetric( " RC2CryptoServiceProvider " , Encrypt);
                    Console.WriteLine(
                    " 原文: " + Encrypt);
                    }
                    }
                    }

                     

                      11.运行结果:

                      微软企业库5.0学习笔记(八)_第10张图片

                       

                      二.  use an existingDPAPI-protected key file: 

                      1. 为了不混淆之前的实验,我们先将原来的策略删除,恢复到最初的状态:

                      微软企业库5.0学习笔记(八)_第11张图片

                      1. 点击symmetric cryptography provider  区块右上角的加号按钮,然后点击 Add Symmetric Cryptography Providers,在弹出的加密算法中我们需要选择和之前一样的加密方法,因为你之前导出的Key文件只针对该算法而导出的:

                      微软企业库5.0学习笔记(八)_第12张图片

                      1. 又到了Key文件生成方案中,我们选择第二个Use an existing DPAPI-protected key file,点击Next:

                      微软企业库5.0学习笔记(八)_第13张图片

                      1. 接着就会要我们选择一个已经存在的Key文件作为本策略的Key文件,我们就选择之前刚刚创建好的test.key文件吧:

                      微软企业库5.0学习笔记(八)_第14张图片

                      1. 接着是选择模式,以前讲过,就不重复了,点击Finish完成配置.

                         6.点击 File 菜单,单击 Save更新原有的App.config文件,打开可看到以下内容.

                         

                        代码
                           
                           
                        < configuration >

                        < configSections >

                        < section name ="securityCryptographyConfiguration" type ="Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.Configuration.CryptographySettings,Microsoft.Practices.EnterpriseLibrary.Security.Cryptography, Version=5.0.414.0,Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission ="true" />

                        </ configSections >

                        < securityCryptographyConfiguration >

                        < symmetricCryptoProviders >

                        < add name ="RC2CryptoServiceProvider" type ="Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.SymmetricAlgorithmProvider,Microsoft.Practices.EnterpriseLibrary.Security.Cryptography, Version=5.0.414.0,Culture=neutral, PublicKeyToken=31bf3856ad364e35"

                        algorithmType
                        ="System.Security.Cryptography.RC2CryptoServiceProvider,mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"

                        protectedKeyFilename
                        ="C:\Users\Administrator\Desktop\test.key"

                        protectedKeyProtectionScope
                        ="CurrentUser" />

                        </ symmetricCryptoProviders >

                        </ securityCryptographyConfiguration >

                        </ configuration >

                         

                        1. 测试:

                         

                          
                          
                        using System;
                        using System.Collections.Generic;
                        using System.Linq;
                        using System.Text;

                        using Microsoft.Practices.EnterpriseLibrary.Security.Cryptography;

                        namespace test
                        {
                        class Program
                        {
                        static void Main( string [] args)
                        {
                        string Encrypt = Cryptographer.EncryptSymmetric( " RC2CryptoServiceProvider " , " HuangCong " );

                        Console.WriteLine(
                        " 密文: " + Encrypt);

                        Console.WriteLine(
                        " ------------------------------------------------ " );

                        Encrypt
                        = Cryptographer.DecryptSymmetric( " RC2CryptoServiceProvider " , Encrypt);
                        Console.WriteLine(
                        " 原文: " + Encrypt);
                        }
                        }
                        }

                         

                        1. 运行结果:

                        微软企业库5.0学习笔记(八)_第15张图片

                         

                        三.   Import a password-protected key file 

                        1. 为了完成该实验,我们要先导出一个用Password加密过的key文件,则我们可以在刚才的策略工具栏上右键,选择Export Key:

                        微软企业库5.0学习笔记(八)_第16张图片

                        1. 接着设置的是对Key文件加密的密码和密码保存文件存放目录,在此我设置的密码是123456,存放目录为桌面的test.txt文件:

                        微软企业库5.0学习笔记(八)_第17张图片

                        1. 点击OK,就可以在桌面看到导出的密码保存文件啦:

                         

                        1. 为了不混淆之前的实验,我们先将原来的策略删除,恢复到最初的状态:

                        微软企业库5.0学习笔记(八)_第18张图片

                        1. 点击symmetric cryptography provider  区块右上角的加号按钮,然后点击 Add Symmetric Cryptography Providers,在弹出的加密算法中任意选择一个,为了做区分,我们仍然要选择原来的加密方法:

                        微软企业库5.0学习笔记(八)_第19张图片

                         

                        1. Key文件生成方案中,我们选择第三个Import a password-protected key file,点击Next: 

                        微软企业库5.0学习笔记(八)_第20张图片

                        1. 接着程序要你提供密码保存文件和密码,在这里我们可以导入桌面的test.txt文件,密码输入123456,接着点击Next:

                        微软企业库5.0学习笔记(八)_第21张图片

                        1. 接着选择新导出的key文件的存放目录,这里我们保存它成桌面的test1.key文件,点击Next:

                        微软企业库5.0学习笔记(八)_第22张图片

                        1. 接着是选择模式,以前讲过,就不重复了,点击Finish完成配置.

                          10. 点击 File 菜单,单击 Save更新原有的App.config文件,打开可看到以下内容:

                        代码
                           
                           
                        < configuration >

                        < configSections >

                        < section name ="securityCryptographyConfiguration" type ="Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.Configuration.CryptographySettings,Microsoft.Practices.EnterpriseLibrary.Security.Cryptography, Version=5.0.414.0,Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission ="true" />

                        </ configSections >

                        < securityCryptographyConfiguration >

                        < symmetricCryptoProviders >

                        < add name ="RC2CryptoServiceProvider" type ="Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.SymmetricAlgorithmProvider,Microsoft.Practices.EnterpriseLibrary.Security.Cryptography, Version=5.0.414.0,Culture=neutral, PublicKeyToken=31bf3856ad364e35"

                        algorithmType
                        ="System.Security.Cryptography.RC2CryptoServiceProvider,mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"

                        protectedKeyFilename
                        ="C:\Users\Administrator\Desktop\test1.key"

                        protectedKeyProtectionScope
                        ="CurrentUser" />

                        </ symmetricCryptoProviders >

                        </ securityCryptographyConfiguration >

                        </ configuration >

                         

                        1. 测试:
                          
                          
                        using System;
                        using System.Collections.Generic;
                        using System.Linq;
                        using System.Text;

                        using Microsoft.Practices.EnterpriseLibrary.Security.Cryptography;

                        namespace test
                        {
                        class Program
                        {
                        static void Main( string [] args)
                        {
                        string Encrypt = Cryptographer.EncryptSymmetric( " RC2CryptoServiceProvider " , " HuangCong " );

                        Console.WriteLine(
                        " 密文: " + Encrypt);

                        Console.WriteLine(
                        " ------------------------------------------------ " );

                        Encrypt
                        = Cryptographer.DecryptSymmetric( " RC2CryptoServiceProvider " , Encrypt);
                        Console.WriteLine(
                        " 原文: " + Encrypt);
                        }
                        }
                        }

                         

                        1. 运行结果:

                        微软企业库5.0学习笔记(八)_第23张图片

                         


                        http://www.cnblogs.com/huangcong/archive/2010/05/29/1747015.html

                        你可能感兴趣的:(学习笔记)