Delphi 加密文件名

Delphi 加密文件名,delphi,Delphi,我需要一个加密方法,它将加密(而不是编码)文件名,以便生成的加密字符串可以存储在SQLite表中 加密方法不得将#0字符插入到生成的字符串中(非ANSI) 例如: 之前:hello\u world.txt 之后:y381a82jzseoi1 两个字符串的长度必须相同,或长度至少不超过10-15% 有什么建议吗?我会这样做: 使用TEncoding.GetBytes将文本转换为二进制。您需要决定编码。支持Unicode UTF-8或UTF-16是最可能的选择。通常UTF-8在空间方面是最有效的

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

加密方法不得将
#0
字符插入到生成的字符串中(非ANSI)

例如:

  • 之前:
    hello\u world.txt
  • 之后:
    y381a82jzseoi1
两个字符串的长度必须相同,或长度至少不超过10-15%


有什么建议吗?

我会这样做:

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

    如果,出于某种我没有预料到的原因,您必须将数据存储为文本,那么您应该将其从二进制编码为文本。您可以实现base255编码,以避免使用空终止符,并保持较小的大小。

    考虑阅读维基百科文章。如果它不适用于你,那么干脆忽略我的评论。