【问题标题】:What encryption algorithm is best for small strings?什么加密算法最适合小字符串?
【发布时间】:2023-03-20 07:15:01
【问题描述】:

我有一个 10-15 个字符的字符串,我想加密该字符串。问题是我想获得尽可能短的加密字符串。我还想将该字符串解密回其原始字符串。

哪种加密算法最适合这种情况?

【问题讨论】:

  • 是否要求加密“很难”(在这种情况下我只是指不平凡)才能破解,还是只是为了缩短字符串?
  • 缩短字符串,“更难破解”只是一个奖励

标签: encryption


【解决方案1】:

AES 使用 16 字节的块大小;如果您对 10-15 个字符的限制是严格的,那么它非常适合您的需求。 PKCS#11 (IIRC) 填充方案将向数据添加 6-1 个字节并生成正好 16 个字节的输出。您实际上不需要使用加密模式(例如 CBC),因为您只加密一个块。存在如何处理密钥的问题 - 始终存在如何处理加密密钥的问题。

如果您必须为较短的字符串使用较短的数据长度,那么您可能需要在 CTR 模式下考虑 AES。这使用密钥和计数器来生成一个字节流,该字节流与字符串的字节进行异或。它会使您的加密字符串与输入的明文字符串保持相同的长度。

您将很难找到一种通用的压缩算法来可靠地减少此类短字符串的长度,因此在加密之前进行压缩几乎不是一种选择。

【讨论】:

    【解决方案2】:

    如果它只是一个短字符串,您可以使用一次性密码本,它在数学上是完全保密的。

    http://en.wikipedia.org/wiki/One-time_pad

    请确保您不要多次使用该密钥。

    【讨论】:

      【解决方案3】:

      如果主要目标是缩短,我会寻找一个压缩库,它允许在通用字符串语料库上构建固定字典。
      我个人没有这方面的经验,但我敢打赌LZMA 可以做到。

      【讨论】:

        猜你喜欢
        • 2010-11-06
        • 2011-10-10
        • 1970-01-01
        • 2020-05-08
        • 1970-01-01
        • 1970-01-01
        • 2014-10-15
        • 2015-09-16
        • 1970-01-01
        相关资源
        最近更新 更多