我有一個程序,加密和解密數據使用對稱密鑰。編碼/解碼和使用可變緩衝區加密/解密的影響
在加密過程I:
- 加密數據
- 的Base64編碼它
在解密期間:
- Base64編碼解碼它
- 解密
它工作正常的數據。現在我正試圖在流緩衝區上執行此過程。假設加密是通過上面提到的大部分數據的程序完成的,並且只有在流式傳輸時纔會進行解密。
在這種情況下做的緩衝區大小/塊大小與我的編碼數據無論何時我解碼嗎?
如果我在3000字節的緩衝區中編碼數據,我還應該讀取多達3000字節並解碼?或者這是無關緊要的?
此外解密時,應該予使用相同的緩衝器大小的我用於傳遞數據到密碼解密?
我嘗試用獨立程序的不同值,它工作正常。然而,當我嘗試streamingly做到這一點:
- 獲取一些字節
- 解碼它
- 解密
- 保存到文件
- 下一組字節解密保留追加到相同文件。
這種方式似乎適用於某些尺寸的數據,而不適用於其他尺寸的數據。並且數據的最終尺寸如同的字符lexx 2-4字節。
我在這裏錯過了一些重要的原則嗎?或者是我可能在邏輯或循環中導致某些字節被遺漏的錯誤?
如果是後者,我會更深入地檢查它。
謝謝
沙比爾
我不知道你的加密算法是什麼,但通常你需要一個[流暗號算法(https://en.wikipedia.org/wiki/Stream_cipher)正常執行流式內容的加密/解密。 – Fabien
*「如果我在3000字節的緩衝區中編碼數據,我應該也讀取多達3000字節並解碼?或者它是否無關緊要?」 - - 它應該無關緊要一個內部的「環形」緩衝區,以防你選擇的塊大小不能被4整除)。 –
使用** 3000 **的緩衝區大小,我檢查了流式解碼字節的輸出(通過將其附加到一個文件)和批量解碼字節。他們似乎是平等的。但是,當我(解密+解密)並連續追加到文件時,最終輸出與批解密不同。 – Shabirmean