国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

淺談.NET中加密和解密的實(shí)現(xiàn)方法分享

2024-07-10 12:44:24
字體:
供稿:網(wǎng)友

.NET將原來獨(dú)立的API和SDK合并到一個框架中,這對于程序開發(fā)人員非常有利。它將CryptoAPI改編進(jìn).NET的System.Security.Cryptography名字空間,使密碼服務(wù)擺脫了SDK平臺的神秘性,變成了簡單的.NET名字空間的使用。由于隨著整個框架組件一起共享,密碼服務(wù)更容易實(shí)現(xiàn)了,現(xiàn)在僅僅需要學(xué)習(xí) System.Security.Cryptography名字空間的功能和用于解決特定方案的類。
  加密和解密的算法

  System.Security.Cryptography名字空間包含了實(shí)現(xiàn)安全方案的類,例如加密和解密數(shù)據(jù)、管理密鑰、驗證數(shù)據(jù)的完整性并確保數(shù)據(jù)沒有被篡改等等。本文重點(diǎn)討論加密和解密。

  加密和解密的算法分為對稱(symmetric)算法和不對稱(asymmetric)算法。對稱算法在加密和解密數(shù)據(jù)時使用相同的密鑰和初始化矢量,典型的有DES、 TripleDES和Rijndael算法,它適用于不需要傳遞密鑰的情況,主要用于本地文檔或數(shù)據(jù)的加密。不對稱算法有兩個不同的密鑰,分別是公共密鑰和私有密鑰,公共密鑰在網(wǎng)絡(luò)中傳遞,用于加密數(shù)據(jù),而私有密鑰用于解密數(shù)據(jù)。不對稱算法主要有RSA、DSA等,主要用于網(wǎng)絡(luò)數(shù)據(jù)的加密。

  加密和解密本地文檔

  下面的例子是加密和解密本地文本,使用的是Rijndael對稱算法。

  對稱算法在數(shù)據(jù)流通過時對它進(jìn)行加密。因此首先需要建立一個正常的流(例如I/O流)。文章使用FileStream類將文本文件讀入字節(jié)數(shù)組,也使用該類作為輸出機(jī)制。

  接下來定義相應(yīng)的對象變量。在定義SymmetricAlgorithm抽象類的對象變量時我們可以指定任何一種對稱加密算法提供程序。代碼使用的是 Rijndael算法,但是很容易改為DES或者TripleDES算法。.NET使用強(qiáng)大的隨機(jī)密鑰設(shè)置了提供程序的實(shí)例,選擇自己的密鑰是比較危險的,接受計算機(jī)產(chǎn)生的密鑰是一個更好的選擇,文中的代碼使用的是計算機(jī)產(chǎn)生的密鑰。

  下一步,算法實(shí)例提供了一個對象來執(zhí)行實(shí)際數(shù)據(jù)傳輸。每種算法都有CreateEncryptor和CreateDecryptor兩個方法,它們返回實(shí)現(xiàn)ICryptoTransform接口的對象。

  最后,現(xiàn)在使用BinaryReader的ReadBytes方法讀取源文件,它會返回一個字節(jié)數(shù)組。BinaryReader讀取源文件的輸入流,在作為CryptoStream.Write方法的參數(shù)時調(diào)用ReadBytes方法。指定的CryptoStream實(shí)例被告知它應(yīng)該操作的下層流,該對象將執(zhí)行數(shù)據(jù)傳遞,無論流的目的是讀或者寫。

  下面是加密和解密一個文本文件的源程序片斷:

代碼如下:
namespace com.billdawson.crypto
{
class TextFileCrypt
{
public static void Main(string[] args)
{
string file = args[0];
string tempfile = Path.GetTempFileName();
//打開指定的文件
FileStream fsIn = File.Open(file,FileMode.Open,
FileAccess.Read);

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 仁布县| 鹤岗市| 万全县| 五家渠市| 贺兰县| 宾阳县| 渑池县| 本溪市| 蚌埠市| 定安县| 崇明县| 西乌珠穆沁旗| 南投市| 嵊泗县| 含山县| 河北省| 潮安县| 南充市| 阜城县| 开封市| 盐池县| 大埔区| 定襄县| 新乐市| 白山市| 凤阳县| 嘉荫县| 喀喇沁旗| 雷山县| 荆门市| 河池市| 监利县| 荣成市| 阿拉善左旗| 黑龙江省| 玉龙| 扶风县| 西藏| 固原市| 玉树县| 天水市|