-8
我需要一種加密方法,它將加密(不編碼)文件名,以便將得到的加密字符串存儲在SQLite表中。加密文件名
加密方法不得在生成的TString(非ANSI)中插入#0
字符。
實施例:
- 之前:
hello_world.txt
- 後:
y381a82jzseoi1
兩個字符串的長度需要是相同的,或至少不超過10-15%長在長度。
有什麼建議嗎?
我需要一種加密方法,它將加密(不編碼)文件名,以便將得到的加密字符串存儲在SQLite表中。加密文件名
加密方法不得在生成的TString(非ANSI)中插入#0
字符。
實施例:
hello_world.txt
y381a82jzseoi1
兩個字符串的長度需要是相同的,或至少不超過10-15%長在長度。
有什麼建議嗎?
我會做這樣的:從文本
TEncoding.GetBytes
爲二進制。你需要決定編碼。爲了支持Unicode UTF-8或UTF-16將是最可能的選擇。通常UTF-8在空間方面效率最高。TEncoding.GetBytes
返回的二進制數據轉換爲加密的二進制數據。請注意,我已經避免將加密的二進制數據轉換回文本。這涉及到您希望通過簡單地側向解決問題來避免空終止符。您要認識到的關鍵是加密對二進制數據而不是文本進行操作。加密算法對文本進行操作是一個非常常見的誤解。
如果出於某種原因,我沒有預料到,您只需將數據存儲爲文本,那麼您應該將其編碼爲二進制文本。你可以實現base255編碼,以避免使用空終止符,並保持大小。
請考慮閱讀[this](http://en.wikipedia.org/wiki/Security_through_obscurity)維基百科文章。如果它不適用於你,然後簡單地忽略我的評論。 – mg30rg