是否有任何算法或方法使用10-16字节密钥加密250个字符,加密字符串的大小仍然少于16个字符?我尝试使用AES 128/256 + DEFLATE,但最终加密的字符串相对于预期的字符串长度非常大。
谢谢!
答案 0 :(得分:2)
首先,您需要在加密前尝试压缩。如果“AES 128/256 + DEFLATE”表示在压缩之前加密,那么您将永远不会得到任何压缩,因为加密数据实际上是随机的压缩器。
其次,即使你这样做,你通常也不会期望在250个字符上有太多压缩。压缩器需要的数据多于查找模式的数据。
第三,即使您拥有大量数据,也不会对高度冗余的数据进行16倍压缩。
答案 1 :(得分:1)
从技术上讲,你可以做到,但这取决于你对“character”的定义。
例如,您可能认为Noël
是四个字符。但是对于Unicode,它实际上是五个代码点:
N
+ o
+ e
+ ¨
+ l
(使用U + 0308结合分音符) < / LI>
结合变音符号很有意思;你可以继续堆积变音符号。所以当你还有四个“字符”时,你有各种额外的代码点 -
以上文字是四个“字符”,但是114 代码点。
添加变音符可以为每个角色提供更多信息。
接下来是Unicode具有大字母表的事实。如果将字母表扩展到其他平面,则可以编码大量信息。它就像base-64,但是带有base-195088。
有关将大量信息塞入少数“字符”的更多信息,请参阅此stackexchange代码质询:
基于Stackoverflow Twitter编码挑战:
如果您有16个字符或16个字节,这一切都很大程度上取决于。
答案 2 :(得分:1)
您描述的算法是键控哈希。截断的Hmac / sha256符合规范,即您只使用生成的哈希的16个第一个字节。 但当然,这是不可逆转的。