将数据流链接到加密转换的流CryptoStream 类
生活随笔
收集整理的這篇文章主要介紹了
将数据流链接到加密转换的流CryptoStream 类
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.命名空間:System.Security.Cryptography
程序集:mscorlib(在 mscorlib.dll 中)
----------------------------------------------------
繼承層次結(jié)構(gòu)
-System.Object
----- System.MarshalByRefObject
--------- System.IO.Stream
-------------System.Security.Cryptography.CryptoStream 2.-------------------------------
????????公共語言運(yùn)行庫使用面向流的設(shè)計(jì)進(jìn)行加密。該設(shè)計(jì)的核心是 CryptoStream。實(shí)現(xiàn) CryptoStream 的任何加密對(duì)象可以和實(shí)現(xiàn) Stream 的任 何對(duì)象鏈接起來,因此一個(gè)對(duì)象的流式處理輸出可以饋送到另一個(gè)對(duì)象的輸入。不需要分別存儲(chǔ)中間結(jié)果(第一個(gè)對(duì)象的輸出)。
????????通過調(diào)用 Close 方法完成 CryptoStream 對(duì)象的使用后,始終應(yīng)該顯式關(guān)閉該對(duì)象。這會(huì)刷新流并使所有剩余的數(shù)據(jù)塊都被 CryptoStream 對(duì)象處理。但是,如果在調(diào)用 Close 方法前發(fā)生了異常,CryptoStream 對(duì)象可能會(huì)關(guān)閉。為確保 Close 方法始終被調(diào)用,請(qǐng)?jiān)?try/catch 語句的 finally 塊中放置 Close 方法調(diào)用。 用目標(biāo)數(shù)據(jù)流、要使用的轉(zhuǎn)換和流的模式初始化?CryptoStream 類的新實(shí)例。 public?CryptoStream?(Stream?stream,ICryptoTransform?transform,
CryptoStreamMode?mode) 參數(shù): stream--?對(duì)其執(zhí)行加密轉(zhuǎn)換的流。 transform-- 要對(duì)流執(zhí)行的加密轉(zhuǎn)換。 mode--CryptoStreamMode 值之一。 任何從 Stream 導(dǎo)出的對(duì)象都可以傳入?stream?參數(shù)。任何實(shí)現(xiàn) ICryptoTransform(例如 HashAlgorithm)的對(duì)象都可以傳入transform 參數(shù)。 3.CryptoStream.Write 方法?
--------------------------------------
將一個(gè)字節(jié)序列寫入當(dāng)前 CryptoStream,并將流中的當(dāng)前位置提升寫入的字節(jié)數(shù)。
public override void Write (byte[ ] buffer,?int offset,?int count)
參數(shù)
buffer: 字節(jié)數(shù)組。此方法將 count 個(gè)字節(jié)從 buffer 復(fù)制到當(dāng)前流。
offset:buffer 中的字節(jié)偏移量,從此偏移量開始將字節(jié)復(fù)制到當(dāng)前流。
count:要寫入當(dāng)前流的字節(jié)數(shù)。 4.CryptoStream.FlushFinalBlock 方法?
----------------------------------------------------
用緩沖區(qū)的當(dāng)前狀態(tài)更新基礎(chǔ)數(shù)據(jù)源或儲(chǔ)存庫,隨后清除緩沖區(qū)。
public void FlushFinalBlock () 5.--------------------------------
如:
???private string DecryptString(string Value)
??{
????????ICryptoTransform transform1=this.mCSP.CreateDecrytor(this.mCSP.Key,this.mCSP.IV);
???????byte [ ] buffer1=Convert.FromBase64String(Value);
???????MemoryStream stream1=new MemoryStream();
???????CryptoStream??stream2=new CryptoStream(stream1,transform1,CrytoStreamMode.Write);
??????stream2.Write(buffer1,0,buffer1.Length);
??????stream2.FlushFinalBlock();
??????stream2.Close();
??????return Encoding.UTF8.GetString(stream1.ToArray());
??}
NOTE:https://www.codeproject.com/articles/6465/using-cryptostream-in-c //加密,解密 例子
程序集:mscorlib(在 mscorlib.dll 中)
----------------------------------------------------
繼承層次結(jié)構(gòu)
-System.Object
----- System.MarshalByRefObject
--------- System.IO.Stream
-------------System.Security.Cryptography.CryptoStream 2.-------------------------------
????????公共語言運(yùn)行庫使用面向流的設(shè)計(jì)進(jìn)行加密。該設(shè)計(jì)的核心是 CryptoStream。實(shí)現(xiàn) CryptoStream 的任何加密對(duì)象可以和實(shí)現(xiàn) Stream 的任 何對(duì)象鏈接起來,因此一個(gè)對(duì)象的流式處理輸出可以饋送到另一個(gè)對(duì)象的輸入。不需要分別存儲(chǔ)中間結(jié)果(第一個(gè)對(duì)象的輸出)。
????????通過調(diào)用 Close 方法完成 CryptoStream 對(duì)象的使用后,始終應(yīng)該顯式關(guān)閉該對(duì)象。這會(huì)刷新流并使所有剩余的數(shù)據(jù)塊都被 CryptoStream 對(duì)象處理。但是,如果在調(diào)用 Close 方法前發(fā)生了異常,CryptoStream 對(duì)象可能會(huì)關(guān)閉。為確保 Close 方法始終被調(diào)用,請(qǐng)?jiān)?try/catch 語句的 finally 塊中放置 Close 方法調(diào)用。 用目標(biāo)數(shù)據(jù)流、要使用的轉(zhuǎn)換和流的模式初始化?CryptoStream 類的新實(shí)例。 public?CryptoStream?(Stream?stream,ICryptoTransform?transform,
CryptoStreamMode?mode) 參數(shù): stream--?對(duì)其執(zhí)行加密轉(zhuǎn)換的流。 transform-- 要對(duì)流執(zhí)行的加密轉(zhuǎn)換。 mode--CryptoStreamMode 值之一。 任何從 Stream 導(dǎo)出的對(duì)象都可以傳入?stream?參數(shù)。任何實(shí)現(xiàn) ICryptoTransform(例如 HashAlgorithm)的對(duì)象都可以傳入transform 參數(shù)。 3.CryptoStream.Write 方法?
--------------------------------------
將一個(gè)字節(jié)序列寫入當(dāng)前 CryptoStream,并將流中的當(dāng)前位置提升寫入的字節(jié)數(shù)。
public override void Write (byte[ ] buffer,?int offset,?int count)
參數(shù)
buffer: 字節(jié)數(shù)組。此方法將 count 個(gè)字節(jié)從 buffer 復(fù)制到當(dāng)前流。
offset:buffer 中的字節(jié)偏移量,從此偏移量開始將字節(jié)復(fù)制到當(dāng)前流。
count:要寫入當(dāng)前流的字節(jié)數(shù)。 4.CryptoStream.FlushFinalBlock 方法?
----------------------------------------------------
用緩沖區(qū)的當(dāng)前狀態(tài)更新基礎(chǔ)數(shù)據(jù)源或儲(chǔ)存庫,隨后清除緩沖區(qū)。
public void FlushFinalBlock () 5.--------------------------------
如:
???private string DecryptString(string Value)
??{
????????ICryptoTransform transform1=this.mCSP.CreateDecrytor(this.mCSP.Key,this.mCSP.IV);
???????byte [ ] buffer1=Convert.FromBase64String(Value);
???????MemoryStream stream1=new MemoryStream();
???????CryptoStream??stream2=new CryptoStream(stream1,transform1,CrytoStreamMode.Write);
??????stream2.Write(buffer1,0,buffer1.Length);
??????stream2.FlushFinalBlock();
??????stream2.Close();
??????return Encoding.UTF8.GetString(stream1.ToArray());
??}
NOTE:https://www.codeproject.com/articles/6465/using-cryptostream-in-c //加密,解密 例子
總結(jié)
以上是生活随笔為你收集整理的将数据流链接到加密转换的流CryptoStream 类的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一步步通过命令行cl.exe编译Wind
- 下一篇: 通过源码将git升级到最新版