加密文件名

时间:2014-07-15 12:00:33

标签: delphi

我需要一种加密方法来加密(不编码)文件名,以便生成的加密字符串可以存储在SQLite表中。

加密方法不得在生成的TString(非ANSI)中插入#0个字符。

示例:

  • 之前:hello_world.txt
  • 之后:y381a82jzseoi1

两根弦的长度必须相同,或者长度至少不超过10-15%。

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

我会这样做:

  1. 使用TEncoding.GetBytes从文本转换为二进制。您需要决定编码。支持Unicode UTF-8或UTF-16将是最可能的选择。通常,UTF-8在空间方面效率最高。
  2. 使用您选择的加密算法进行加密。这会将TEncoding.GetBytes返回的二进制数据转换为加密的二进制数据。
  3. 将加密的二进制数据以blob格式保存到数据库中。
  4. 请注意,我已避免将加密的二进制数据转换回文本。这就是通过简单地侧面解决问题来解决您避免空终止符的愿望。您要认识到的关键点是加密操作是二进制数据而不是文本。加密算法对文本进行操作是一种非常常见的误解。

    如果由于某些原因我没有预料到,您只需将数据存储为文本,那么您应该将其从二进制编码为文本。您可以实现base255编码以避免使用null终止符,并保持大小不变​​。