我有一个10-15个字符的字符串,我想加密该字符串。问题是我想尽可能获得最短的加密字符串。我还想将该字符串解密回原始字符串。
哪种加密算法最适合这种情况?
答案 0 :(得分:9)
AES使用16字节的块大小;如果您的10-15个字符的限制是坚定的,它非常适合您的需求。 PKCS#11(IIRC)填充方案将向数据添加6-1个字节并生成恰好16个字节的输出。您实际上不需要使用加密模式(例如CBC),因为您只加密一个块。存在如何处理密钥的问题 - 总是存在如何处理加密密钥的问题。
如果您必须使用较短的数据长度来缩短字符串,那么您可能需要在CTR模式下考虑AES。这使用密钥和计数器生成一个字节流,该字节流与字符串的字节进行异或。它会使您的加密字符串与输入的明文字符串保持相同的长度。
您很难找到可靠地减少此类短字符串长度的通用压缩算法,因此在加密之前进行压缩几乎不是一种选择。
答案 1 :(得分:5)
答案 2 :(得分:1)
如果主要目标是缩短,我会寻找一个压缩库,它允许在公共字符串语料库上构建固定字典。
就个人而言,我没有相关经验,但我打赌LZMA可以做到这一点。