2017-08-26 39 views
-2

在讀TXT文件線路加密數據我發現這個代碼加密/在VB.NET解密數據:VB.NET - 通過線

Dim cypherTextBytes As Byte() = Convert.FromBase64String(encryptedData) 
    Dim memoryStream As MemoryStream = New MemoryStream(cypherTextBytes) 
    Dim cryptoStream As CryptoStream = New CryptoStream(memoryStream, Me.decryptor, CryptoStreamMode.Read) 
    Dim plainTextBytes(cypherTextBytes.Length) As Byte 
    Dim decryptedByteCount As Integer = cryptoStream.Read(plainTextBytes, 0, plainTextBytes.Length) 
    memoryStream.Close() 
    cryptoStream.Close() 

,我有問題是,我不不知道如何逐行讀取.TXT文件,一次只保存一行爲「encryptedData」,然後解密,並將其添加到另一個.TXT文檔中的一行中。

謝謝!

+0

爲什麼要一次加密一行數據?文本中的換行符就像任何其他字符一樣。當你加密文本時,你將整個文本轉換爲字節,然後你加密這些字節。當您解密時,您將解密所有數據,然後將結果字節轉換爲文本。 – jmcilhinney

回答

5

您可以使用File.ReadLines方法,該方法將返回包含文件中行的IEnumerable(Of String)。然後簡單地遍歷這些行並將每行傳遞爲encryptedData值。

在此循環中,一旦您解密了行,您可以使用File.AppendAllLines方法將結果附加到另一個文件。這個方法需要附加一行數組,所以在你的情況下,你可以簡單地將它傳遞給一個具有1個元素的數組。

對代碼的進一步改進是將解密片段提取到一個單獨的方法中,該方法將取1個參數表示加密數據並返回解密數據。

+0

感謝您的回覆,我可以得到這段代碼:https://pastebin.com/kLnTrd4G,但是我得到一個「System.InvalidCastException:'從類型'ReadLinesIterator'轉換爲類型'String'無效。錯誤,我做錯了什麼?再次感謝。 – GR8R8M8