兽音译器的编码原理
线上转化网址:兽音译者在线编码解码 - 兽音翻译咆哮体加密解密
如果你是单纯的使用使用的话,跳转上面链接即可,本文是在探讨该网址的编码原理,为了给那些迁移兽音编码功能,或者想要单纯了解下编码原理的人提供资料。
示例
明文:aaab
密文:~呜嗷嗷嗷嗷呜啊嗷呜嗷呜嗷呜呜~嗷啊嗷啊嗷啊呜嗷嗷~嗷~嗷~呜呜嗷嗷呜啊
原理
若编码字符使用0123的话
密文: 310000120101011302020210030303110012
使用0123,是很直观的看到其4进制的密文信息的。编码字符只是做了一个简单的字符替换而。在已知4进制密文时候,把“嗷呜啊~” 分别对应0,1,2,3进行替换。
这个4进制有些固定格式:
前面3位一定是310,最后一位一定是2。所以有效信息只有中间的一部分而已。
比如例子的310000120101011302020210030303110012
有效部分:00012010101130202021003030311001
将其转为16进制:01 84 45 c8 89 0c cd 41
所以密文的16进制:018445c8890ccd41
示例编码步骤
从aaab开始吧,输入的是utf8编码的,将其utf8编码转为unicode编码
其unicode的16进制编码为 00 61 00 61 00 61 00 62
每个16进制都需要进行偏移数值,偏移值=所在的位置,从0开始计算位置。偏移值超过f的话,从0开始,即模16。对应每一个16进制x的值,都满足x = (x+(x的所在位置))%16
示例的每个数字分别偏移: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
(0+0)% 16 = 0
(0+1)% 16 = 1
(6+2)% 16 = 8
(1+3)% 16 = 4
(0+4)% 16 = 4
(0+5)% 16 = 5
(6+6)% 16 = 12 转为16进制:c
(1+7)% 16 = 8
(0&