如何最短伪加密中文?

hik
@Ta 2021-01-22 2407点击

我想的加密就是让中文不显示以特殊字符代替,例如emoji,但是我想emoji加密英文可以,因为其只有26个跟10个阿拉伯数字,加上逗号句号最短只占用38个emoji,但是对于中文呢?
我想最短的是不是unicode编码?一个字符固定占用6个emoji。只是100字文章可能需要600个emoji看起来太多所以用بٍٍٍٍََُُُِّّّْرٍٍٍٍََُُِِّّّْآٍٍٍَُّ这种字符呢?占用空间小,但我不清楚有没有37个(unicode由字母数字斜杠组成)不同的
https://cway.top

回复列表(8|隐藏机器人聊天)
  • @Ta / 2021-01-22 / /

    @hik,用base64,找64个不同的emoji就可以。然后编码使用UTF-16或者GBK,这样大部分汉字只需要2字节。UTF-8是3字节。不过UTF-16的英文占2字节,GBK是1字节。

  • hik
    @Ta / 2021-01-22 / /

    @老虎会游泳,base64确实短,基本4个字符一个汉字,后面说的编码应该不用考虑,我想仅提供复制字符使用就行,别人输入一段文字加密后自动转成emoji
    https://cway.top

  • @Ta / 2021-01-22 / /

    @hik,在输入编码为UTF-8的情况下,才是4个字符1个汉字(8个字符2个汉字)。在输入编码是GBK或者UTF-16的情况下,是8个字符3个汉字(每个汉字2.66个字符)。

    Base64编码会让3个字节变为4个字节,编码后长度是原来的1.33倍。所以输入越短,输出越短。采用双字节字符集(UTF-16、GBK等)显然比三字节字符集(大部分UTF-8汉字)具有更短的输入。

  • @Ta / 2021-01-22 / /

    @hik,对了,你还可以对内容进行deflate压缩后再进行base64编码,这样可以更小。如果使用deflate压缩,原文使用什么字符编码就没什么区别了,压缩后大小应该都差不多。

    注意:不要使用gzip或zlib压缩,它们其实都是deflate压缩,只是在压缩结果的基础上添加了额外的头信息,徒增大小。详见:
    https://blog.csdn.net/rainharder/article/details/26342919

    解码时先base64_decode再用inflate(deflate对应的解压函数)解压即可。

  • @Ta / 2021-01-22 / /

    @hikScreenshot_20210122112225.jpg

    你说的可是这种?

    https://emoji.ohou.ga/

    小米8(白)

  • hik
    @Ta / 2021-01-22 / /

    @艾木友尔尔巴,是的不过如果按照老虎那样优化会更好,这个一个字符就占好多表情包
    https://cway.top

  • @Ta / 2021-01-22 / /

    @hik,可以参考一下,期待你做出老虎的方案。我发给你的一般只是开车的
    小米8(白)

  • @Ta / 2021-01-22 / /
    这个加密有意思,为什么会有这种想法啊…
添加新回复
回复需要登录