base100是一种对称加密,特点是加密后是emoji。讲base100的文章比较少。其实也很简单,这块做一个记录。
这里拿字符'a'举例说明加密过程:
首先会根据字符的字节数,决定emoji表情个数
字符a占一个字节所以要生成一个emoji,emoji表情在utf-8编码中占4个字节
https://apps.timwhitlock.info/unicode/inspect/hex/1F3BF
初始emoji的四个字节(十六进制)如下
然后会根据输入的字符对每个emoji的后两个字节进行更改,这里拿'a'举例就会对一个初始emoji的8f和80进行更改。对第三位更改为0x8f+(97+55)/64(整除),对第四位更改为 0x80 + (97+55)%64。//97是字符a对应的十进制ascii码,也是转换成byte后的数据,dddd。
计算结果
对应的emoji是衣服
找个base64网站解码下看看对不对
题外话:
记得上大学的时候老师常说,英语字符占一个字节,汉字占两个字节(也有可能我记错了,毕竟天生记忆力比较差哈哈,汉字俩字节成了我的固有印象)。我用emoji加密“我”却发现输出了3个emoji,这说明"我"这个汉字其实是占三个字节的,用python也可以证明这一点。在不同编码中汉字所占的字节数是不同的,GBK编码,一个汉字占两个字节。UTF-8编码是变长编码,通常汉字占三个字节。
总之具体问题具体分析吧,少看文章,多动手😴。
base100加解密网站:www.atoolbox.net/Tool.php?Id=936