2011-12-20 97 views
1

我需要一個快速和強大的壓縮+加密方法爲我的DAT文件。德爾福壓縮和加密

我有一個DAT文件,其中包含非常敏感的信息,我想壓縮和加密它。我知道我可以在壓縮方法中使用Zlib,但加密方法又如何呢?

千恩萬謝

+0

尋找德爾福加密組件提供了一些結果http://www.google.ie/search?aq=f&sourceid=chrome&ie=UTF-8&q=delphi+encryption+component – 2011-12-20 12:07:21

回答

3

如果您在同一時間需要加密和壓縮,你必須實現它的方法有兩種:

  • 使用你的數據在內存緩衝區,然後壓縮此緩衝區,然後加密它;
  • 使用流,一個用於壓縮,另一個用於加密。

在所有情況下,最好是在加密前進行壓縮。對壓縮格式的數據進行解密更加困難,因爲其內容不太可能。

然後依靠足夠強大的加密算法(如AES)。

您在我們的開放源代碼單元(從Delphi 5到XE2)中擁有所有這些功能。您可以使用ZIP,或嘗試我們更快的速度(但在壓縮率方面效率較低)SynLZ。然後可以使用SynCrypto加密它。有直接的功能處理RawByteString種類的數據,它將數據存儲在內存緩衝區中。

+0

您可以使用SynLZ壓縮和加密5 GB文件嗎?它似乎受限於可用於保存字符串的內存量,除非應該將一定量的內容加載到內存中,然後對其進行壓縮,然後再寫入內存? – 2012-07-25 20:14:50

5

請檢查出Delphi Encryption Compendium(又名DEC):

+0

我知道DEC,但我想達到的是: 壓縮+同時加密(不僅壓縮或加密) 謝謝 – randydom 2011-12-20 12:13:43

+4

我會壓縮,然後加密,這是2個獨立的階段。 – whosrdaddy 2011-12-20 12:15:00

+2

如果您在內存中使用流,這些階段不要求您輸出臨時文件到磁盤。 – 2011-12-20 14:12:46

5

另一個備受使用的分量是DCPCrypt:

http://www.cityinthesky.co.uk/opensource/dcpcrypt

它是基於流的,所以你可以疊加壓縮和加密。我不知道一步完成的代碼。 (至少不懂事加密)

+2

我已經用過這個了。因爲流可以輕鬆組合(分層),所以我甚至可以用很少的努力就可以實現多層加密。您如何使用ZLIB流,然後將該strem輸出到AES加密流?流是壓縮+1加密的關鍵。這不是一步或多個步驟,而是一個流,並且您需要每層一個循環,並且您不需要編寫任何未加密到磁盤的臨時zip文件。 – 2011-12-20 14:03:46

+0

並且例如像base64恩/解碼,這是我的確切情況。 – 2011-12-20 14:17:48

+0

有一次,我試圖使用DCPCrypt for Blowfish,它不符合PHP實現。我不知道這是否是我的,但是您需要確保它與其他實現相匹配,以便您不會被鎖定。 – 2011-12-20 19:19:18