我想将字符串压缩/转换为新字符串。
即: 输入字符串:
USERNAME/REGISTERID
压缩后的输出字符串:
<some-string-in-UTF8-format>
解压缩后的输出字符串:
USERNAME/REGISTERID
这种转换有一些压缩或哈希方法吗?
我更喜欢使用Java或具有基本流程步骤的算法的解决方案。
我已经阅读并尝试使用Huffman转换,但压缩输出由字节出站UTF-8字符集组成。
答案 0 :(得分:2)
您可以使用ZipOutputStream。
ByteArrayOutputStream result = new ByteArrayOutputStream();
new ZipOutputStream(result).write("myString".getBytes());
byte[] bytes = result.toByteArray();
你只需找出正确的字符串编码。这种情况可以使用Base64 representation完成。
答案 1 :(得分:1)
请参阅iconv和mb_convert_encoding
。对于编码,可以考虑base64_encode
。
答案 2 :(得分:1)
Commons-code提供了一个非常简单的Base64 class来使用。
你不能使用散列函数,因为散列函数通常只是单向的:即给定MD5或SHA1散列,你不应该解码它以找出源消息是什么。< / p>
答案 3 :(得分:0)
如果您的名字显示有标识符的数据库ID,为什么不将此数字用作编码? (如果你愿意,把它作为字符串。)
您不应该希望使用压缩算法获得更好的压缩,因为它们都需要一些标头,并且标头大小本身可能比输入字符串长。
答案 4 :(得分:0)
看起来有人要求您混淆用户名/密码组合。这可能不是一个好主意,因为它表明安全性没有。您也可以为此实现ROT13加密,并使用双ROT13进行解密。