.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|