.Net中的加密和解密的學習
2007/1/6 14:12:48
.NET將原來獨立的API和SDK合并到一個框架中,這對于程序開發(fā)人員非常有利。它將CryptoAPI改編進.NET的System.Security.Cryptography名字空間,使密碼服務擺脫了SDK平臺
的神秘性,變成了簡單的.NET名字空間的使用。
   加密和解密的算法
  System.Security.Cryptography名字空間包含了實現(xiàn)安全方案的類,例如加密和解密數(shù)據、管理密鑰、驗證數(shù)據的完整性并確保數(shù)據沒有被篡改等等
  加密和解密的算法分為對稱(symmetric)算法和不對稱(asymmetric)算法。對稱算法在加密和解密數(shù)據時使用相同的密鑰和初始化矢量,通過私鑰對數(shù)據塊進行加密,只有
與之對應發(fā)布的公鑰才能解密。從而確保了發(fā)布消息的正確身份。典型的有DES、 TripleDES和Rijndael算法,它適用于不需要傳遞密鑰的情況,主要用于本地文檔或數(shù)據的加密。
    不對稱算法有兩個不同的密鑰,分別是公共密鑰和私有密鑰,公共密鑰在網絡中傳遞,用于加密數(shù)據,而私有密鑰用于解密數(shù)據。不對稱算法主要有RSA、DSA等,主要用于網
絡數(shù)據的加密。
--------------------------------------------------------------------------
部分名詞
密鑰 Secret key
對稱加密算法 symmetric cryptography
非對稱加密算法 asymmetric cryptography
數(shù)字簽名 digital signature
證書 certificate
認證授權 certificate
摘要 digest
---------------------------------------------------------------------------
.NET的提供的加密功能類
  對稱加密類
  System.Security.Cryptography.SymmetricAlgorithm
      System.Security.Cryptography.DES
      System.Security.Cryptography.RC2
      System.Security.Cryptography.Rijndael
      System.Security.Cryptography.TripleDES
  非對稱加密類 
  System.Security.Cryptography.AsymmetricAlgorithm
      System.Security.Cryptography.DSA
      System.Security.Cryptography.RSA
---------------------------------------------------------------------------
具體使用方法
加密和解密本地文檔 使用的是Rijndael對稱算法
    對稱算法在數(shù)據流通過時對它進行加密。因此首先需要建立一個正常的流(例如I/O流)。文章使用FileStream類將文本文件讀入字節(jié)數(shù)組,也使用該類作為輸出機制。
  接下來定義相應的對象變量。在定義SymmetricAlgorithm抽象類的對象變量時我們可以指定任何一種對稱加密算法提供程序。代碼使用的是Rijndael算法,但是很容易改為DES 
   
    或者TripleDES算法。.NET使用強大的隨機密鑰設置了提供程序的實例,選擇自己的密鑰是比較危險的,接受計算機產生的密鑰是一個更好的選擇,文中的代碼使用的是計算機 
   
    產生的密鑰。算法實例提供了一個對象來執(zhí)行實際數(shù)據傳輸。每種算法都有CreateEncryptor和CreateDecryptor兩個方法,它們返回實現(xiàn)ICryptoTransform接口的對象。
  最后,現(xiàn)在使用BinaryReader的ReadBytes方法讀取源文件,它會返回一個字節(jié)數(shù)組。BinaryReader讀取源文件的輸入流,在作為CryptoStream.Write方法的參數(shù)時調用   
   
    ReadBytes方法。指定的CryptoStream實例被告知它應該操作的下層流,該對象將執(zhí)行數(shù)據傳遞,無論流的目的是讀或者寫
        string file = args[0];
string tempfile = Path.GetTempFileName();
//打開指定的文件
FileStream fsIn = File.Open(file,FileMode.Open,FileAccess.Read);
FileStream fsOut = File.Open(tempfile, FileMode.Open,FileAccess.Write);
 
//定義對稱算法對象實例和接口  SymmetricAlgorithm所有的對稱算法類都是從這個基類繼承而來的
      SymmetricAlgorithm symm = new RijndaelM

下一頁
返回列表
返回首頁 主站蜘蛛池模板: 国产精品毛片a∨一区二区三区| 日韩欧美一区二区三区免费看 | 国产欧美日韩在线观看精品| 99久久精品免费看国产一区二区三区| 操美女视频免费网站| 亚洲av无码专区在线| 欧美精品亚洲精品日韩专区| 免费看一级特黄a大片| 老司机深夜福利影院| 国产午夜福利100集发布| 四虎在线成人免费网站| 国产超碰人人模人人爽人人喊 | 日韩在线第三页| 亚洲另类第一页| 正点嫩模大尺度写真在线视频 | 青草青草久热精品视频在线观看 | 国产日韩成人内射视频| 2018天天射| 国内精品视频在线观看| jizz中国免费| 巨年少根与艳妇全文阅| 中文字幕综合网| 日本熟妇色一本在线观看| 久精品在线观看| 欧美v日韩v亚洲v最新| 亚洲成av人片在线观看无码不卡 | 日韩欧美在线观看视频| 亚洲一区欧洲一区| 欧美日韩国产成人高清视频| 亚洲色欲久久久久综合网| 男女裸体影院高潮| 午夜福利视频合集1000| 美女被无套进入| 国产乱人伦av在线a| 高清无码一区二区在线观看吞精| 国产真实乱子伦精品视| 香蕉精品视频在线观看| 国产精品黄页免费高清在线观看 | 97在线公开视频| 在镜子里看我怎么c你的| s女m男调教337799|