How to generate a small encrypted output (around 16 Bytes) from 250 characters and a 16 byte key?
是否有任何算法或方法可以使用10-16字节的密钥加密250个字符,并且加密后的字符串的大小仍然小于16个字符?我尝试使用aes 128/256+deflate,但最终加密的字符串相对于预期的字符串长度来说相当大。
谢谢!
首先,您需要在加密之前尝试压缩。如果"aes 128/256+deflate"表示压缩前加密,那么您将永远不会得到任何压缩,因为加密数据实际上是随机的。
第二,即使这样做了,一般来说,您也不会期望仅对250个字符进行太多压缩。压缩器需要更多的数据来寻找模式。
第三,除了高度冗余的数据之外,任何数据都不会得到16倍的压缩,即使您有大量的数据。
您描述的算法是键控哈希。截断的hmac/sha256符合规范,即只使用所生成哈希的前16个字节。当然,这是不可逆的。
从技术上讲,你可以做到,但这取决于你对"性格"的定义。
例如,您可能认为
N +o +e +¨ +l (用u+0308组合分光)
组合音调符号很有趣;您可以不断地堆积音调符号。所以当你还有四个"字符"时,你有各种额外的代码点-
- 诺伊?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????L
上面的文字是四个"字符",但是是114个代码点。
添加音调符号可以为每个字符提供更多信息。
接下来是Unicode有一个很大的字母表。如果将字母表扩展到其他平面,就可以对许多信息进行编码。它和Base-64很像,但和Base-195088一样。
有关将大量信息塞进几个"字符"中的更多信息,请参阅此StackExchange代码挑战:
- 将图像编码为tweets(极端图像压缩版)
基于StackOverflow Twitter编码挑战:
- Twitter图像编码挑战
这完全取决于您是否有16个字符或16个字节。