<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      happyhippy

      這個世界的問題在于聰明人充滿疑惑,而傻子們堅信不疑。--羅素




      http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/dnpag2crypto1.mspx?mfr=true
      http://msdn2.microsoft.com/en-us/library/aa480457.aspx

      只支持對稱加密和Hash摘要。

      1. 解決的問題:
          開發(fā)人員經(jīng)常編寫一些需要加密和哈希功能的應(yīng)用程序,以滿足其組織的安全性要求。通常需要加密由應(yīng)用程序創(chuàng)建和維護的數(shù)據(jù)以及配置信息。另外,還需要對用于訪問應(yīng)用程序功能或數(shù)據(jù)的密碼進行哈希運算。

          加密應(yīng)用程序塊通過將應(yīng)用程序代碼從特定的加密提供程序中抽象出來,從而簡化了開發(fā)人員的工作。您可以通過更改配置來更改基礎(chǔ)提供程序,而無需更改基礎(chǔ)應(yīng)用程序代碼。它還可以封裝與加密有關(guān)的常見難題(例如,加密和保留加密密鑰)的最佳做法實現(xiàn)。

      2. 使用
      (0) 使用EntLib Configuration配置App.config/Web.config;
          項目中添加Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.dll引用;
          代碼中引用命名空間using Microsoft.Practices.EnterpriseLibrary.Security.Cryptography;
      (1) Encrypt(支持DPAPI、AES、DES、3DES、RC2和自定義加密算法)

      string plainText = "Source";
      string symmProvider = "symmProvider";//EntLib Configuretion工具配置時設(shè)定的provider名字
      string target = Cryptographer.EncryptSymmetric(symmProvider, plainText);

      (2) Decrypt

      string encryptedData = "×××××××××……";
      string symmProvider = "symmProvider";//EntLib Configuretion工具配置時設(shè)定的provider名字
      string plainText = Cryptographer.DecryptSymmetric(symmProvider, encryptedData);

      (3) Hash(支持System.Security.Cryptography命名空間下的所有hash算法和自定義hash算法)

      private const string hashProvider = "hashprovider";
      private string plainText = "password";
      byte[] valueToHash = Encoding.UTF8.GetBytes(plainText); 
      private byte[] generatedHash = Cryptographer.CreateHash(hashProvider, valueToHash);

      (4) 比較Hash是否與文本匹配

      const string hashProvider = "hashprovider";
      byte[] existingHashValue;
      byte[] valueToHash = Encoding.UTF8.GetBytes("password");  
      bool comparisonSucceeded = Cryptographer.CompareHash(hashProvider, valueToHash, existingHashValue);

       

      3. Cryptography Application Block的設(shè)計:

       

      4. 關(guān)于使用對稱加密時,密鑰的存放
          我們知道,對稱加密中加密和解密要用到同一個密鑰key;如果攻擊者得到了Key,它就可以解密得到原始數(shù)據(jù),因此加密后數(shù)據(jù)的安全性就落在了對Key的保密上。在使用.Net的System.Security.Cryptography命名空間下的AES、DES、3DES、RC2等加密算法時,EntLib配置工具會有個密鑰文件生成向?qū)В瑢⒚荑€進行DPAPI(Data Protection API,DPAPI的加密密鑰是根據(jù)當(dāng)前登錄到計算機的用戶名和密碼信息派生出來的,由操作系統(tǒng)進行管理,關(guān)于DPAPI的更多知識,惡意參考下面的第6節(jié))對稱加密后存在文件Key.Key中(如果文件被刪,則會加/解密失敗,配置文件中的<securityCryptographyConfiguration>定義了密鑰文件在本地計算機上的絕對路徑)。我們可以使用下面兩種方式來保護Key的安全:
      (1) 使用ACL將密鑰文件只授權(quán)給合適的用戶。(Protect your keys with access control lists (ACL). Only grant the necessary permissions to the identities that require access to the key file. )
      (2) 不要在低信任環(huán)境中的計算機上配置遠程調(diào)試。(Do not configure your computer to allow remote debugging when that computer runs in a low-trust environment. An example of such a computer is a Web server that allows anonymous access. )

      5. 密鑰的分發(fā):
          不用計算機上的熵(entropy)值不同,所以當(dāng)我們在一臺計算機上加密,而要在另一臺計算機上解密時,我們不能直接傳送Key.Key文件,而只能使用EntLib配置工具:
      (1) 導(dǎo)出密鑰(Export Key)->輸入密碼(password);
      (2) 配置工具會將Key.Key文件中的密鑰進行DPAPI解密,再根據(jù)輸入的密碼組織成密鑰進行加密,生成txt文件;
      (3) 傳輸該txt文件;
      (4) 另一臺計算機上,使用EntLib創(chuàng)建加密Provider時,選擇從txt文件中導(dǎo)入密鑰,輸入剛才加密用的密鑰(password),EntLib會解密txt文件并進行DPAPI加密后存到本地計算機上。

          密鑰分發(fā)太繁雜了,導(dǎo)來導(dǎo)去的,實際項目中:譬如一個服務(wù)器和N個客戶端,每個客戶端獨占一個密鑰,誰會這樣分發(fā)密鑰!感覺玩玩還行,適用價值不高...

      6. 關(guān)于DPAPI(http://www.microsoft.com/china/technet/security/guidance/secmod21.mspx):
      (1) Windows2000操作系統(tǒng)和更高版本的操作系統(tǒng)提供了用于加密和解密數(shù)據(jù)的Win32數(shù)據(jù)保護API(DPAPI);
      (2) DPAPI是加密API(Crypto API)的一部分并且是在crypt32.dll中實現(xiàn)的。它包含兩個方法:CryptProtectData和 CryptUnprotectData;
      (3) DPAPI 特別有用,因為它能夠消除使用密碼的應(yīng)用程序所帶來的密鑰管理問題。雖然加密能確保數(shù)據(jù)安全,但您必須采取額外的步驟來確保密鑰的安全。DPAPI使用與DPAPI函數(shù)的調(diào)用代碼關(guān)聯(lián)的用戶帳戶的密碼,以便派生加密密鑰。因此,是操作系統(tǒng)(而非應(yīng)用程序)管理著密鑰。
      (4) DPAPI 能夠與計算機存儲或用戶存儲(需要一個已加載的用戶配置文件)配合使用。DPAPI 默認情況下用于用戶存儲,但您可以通過將 CRYPTPROTECT_LOCAL_MACHINE 標志傳遞給 DPAPI 函數(shù)來指定使用計算機存儲。
      (5) 這種用戶配置文件方式提供了一個額外的安全層,因為它限制了哪些用戶能訪問機密內(nèi)容。只有加密該數(shù)據(jù)的用戶才能解密該數(shù)據(jù)。但是,當(dāng)通過 ASP.NET Web 應(yīng)用程序使用 DPAPI 時,使用用戶配置文件需要您執(zhí)行額外的開發(fā)工作,因為您需要采取明確的步驟來加載和卸載用戶配置文件(ASP.NET 不會自動加載用戶配置文件)。
      (6) 計算機存儲方式更容易開發(fā),因為它不需要管理用戶配置文件。但是,除非使用一個附加的熵參數(shù),否則并不安全,因為該計算機的任何用戶都可以解密數(shù)據(jù)。(熵是一個設(shè)計用來使解密機密內(nèi)容更為困難的隨機值)。使用附加的熵參數(shù)出現(xiàn)的問題在于它必須由應(yīng)用程序安全地存儲起來,這帶來了另一個密鑰管理問題。

      注意:如果您將 DPAPI 和計算機存儲一起使用,那么加密字符串僅適用于給定的計算機,因此您必須在每臺計算機上生成加密數(shù)據(jù)。不要在場或群集中將加密數(shù)據(jù)從一臺計算機復(fù)制到另一臺計算機。

      如果將 DPAPI 和用戶存儲一起使用,則可以用一個漫游的用戶配置文件在任何一臺計算機上解密數(shù)據(jù)。


      有關(guān)對稱加密和非對稱加密的更多支持,可以參考我以前寫的:http://www.rzrgm.cn/happyhippy/category/79936.html


      posted on 2007-08-15 08:58  Silent Void  閱讀(701)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 国产精品中文字幕久久| 一本无码在线观看| 高清偷拍一区二区三区| 大尺度国产一区二区视频 | 免费播放一区二区三区| 日韩a无v码在线播放| 国产在线98福利播放视频| 国产资源精品中文字幕| 韩国19禁无遮挡啪啪无码网站 | 在线成人精品国产区免费| 狠狠色综合久久丁香婷婷| 国产精品男女爽免费视频| 国产综合久久99久久| 内射少妇一区27p| 天天躁夜夜躁天干天干2020| 九九综合九色综合网站| 亚洲精品人妻中文字幕| 久久精品蜜芽亚洲国产av| 正在播放国产剧情亂倫| 亚洲热无码av一区二区东京热av| 日韩成人无码影院| 日本狂喷奶水在线播放212| 海安县| 国产午夜福利精品视频| 97精品伊人久久久大香线蕉| 国产乱人激情H在线观看| 国产又色又爽又高潮免费| 国产亚洲精久久久久久无码77777| 熟女国产精品一区二区三| 狠狠亚洲色一日本高清色| 国内精品久久久久影院网站 | 国产情侣激情在线对白| 蜜桃臀av一区二区三区| 天美传媒mv免费观看完整| 亚洲自拍偷拍激情视频| 日本高清视频在线www色| 人妻精品中文字幕av| 欧美成人精品手机在线| 中文字幕乱码在线播放| 狠狠v日韩v欧美v| 国产一区二区三区精品片|