2019/03/27

What is Encryption in Delphi? (1)

記得之前和網友討論到 Delphi 官方沒有加密單元時,總覺得很不可思議,因為 DataSnap 有這個加密 Filter:

TTransportFilterItem.FilterId: PC1 / RSA
既然有加密設定,想必加密法肯定暗藏在 Source 裡的某個角落。





這一找就是 8 個該死的夜晚。





究竟 DataSnap 是怎麼操作加密呢?黑夜裡一個人默默盯著螢幕的我喃喃自語中。


「Honey,今天不一起做『功課』嗎?」
 「別吵,我還有一個難題還沒解,自己抱熊大先睡吧!」


仔細想想,被冷落的老婆還真的有些可憐。

但是真相未解,不甘心就此放棄,我也是執念無法放下啊!















不,我只是想炫耀而已。(各種含意)


探索


經由 DSTCPServerTransport 單元的指引,看到了依存的 DBXTransport,在 uses 裡我看到了一個敏感的詞:

DBXEncryption
這,這不就是加密嗎!

彷彿是看到了一絲曙光,我打開了我的 D 槽……Delphi 安裝路徑,開啟這神秘的 DBXEncryption 原始碼。

它的開頭就是這麼寫的:


PC1 加密肯定是從這裡來的,你這可愛的小妖精居然躲在這裡啊!

止不住內心的悸動,TPC1Cypher 是 PC1 加密類別,直覺告訴我 RSA 可能就是 TRSACypher。



但 DBXEncryption 單元裡沒看到它的蹤跡,難道是猜錯了?

不、不可能!賭上我爺爺的名聲(?),我一定要找出真相!

我試著在原始碼海裡找出可能的蛛絲馬跡……

DBXOpenSSL

這個檔案的開頭是這麼寫的:

果然如我所料想的一樣,RSA 加密法就是以【TRSACypher】命名。

究竟是加密法的情慾鳩葛,亦或是 DataSnap 的纏綿斐撤?

就讓我們繼續看下去!


(To be continued )


See also:

沒有留言:

張貼留言