mysql 如何解码以“type*:“为前缀的base64存储的数据?

8i9zcol2  于 2023-02-21  发布在  Mysql
关注(0)|答案(2)|浏览(246)

我如何解码下面的base64编码字符串的例子?(它存储在MySQL数据库)
base64:type251:WXlnY2p0bFl5Z2NqdGxZeWdjanRsWXlnY2
我已经试着用普通的base64解码了,但是没有用。“type 251”前缀应该有意义,但是我在文档/谷歌上没有找到任何东西。
有没有在线工具可以解码?

vwoqyblh

vwoqyblh1#

前缀base64:type251:除了对应用程序来说没有任何意义,我假设它是一些额外的注解,告诉客户机在解码结果后如何处理它。
你所显示的字符串'WXlnY2p0bFl5Z2NqdGxZeWdjanRsWXlnY2'不是一个有效的base64字符串,因为它没有填充到八位字节的集合中,使之成为24位的偶数倍。https://en.wikipedia.org/wiki/Base64#Output_padding
尝试解码失败,只返回NULL:

mysql> select from_base64('WXlnY2p0bFl5Z2NqdGxZeWdjanRsWXlnY2') as result;
+----------------+
| result         |
+----------------+
| NULL           |
+----------------+

如果添加几个=填充字符,MySQL的内置函数可以在去掉前缀后解码base64字符串。

mysql> select from_base64('WXlnY2p0bFl5Z2NqdGxZeWdjanRsWXlnY2==') as result;
+------------------------------------------------------+
| result                                               |
+------------------------------------------------------+
| 0x597967636A746C597967636A746C597967636A746C59796763 |
+------------------------------------------------------+

这是一个二进制字节字符串,呈现为十六进制数字,以便以人类可读的形式显示。
它是什么意思?我不知道。我可以猜测它是“type251”的一个序列化对象示例,这是保存数据的应用程序特有的东西。你没有描述任何关于你的应用程序的东西,甚至没有描述它是用什么语言编写的。

pgvzfuti

pgvzfuti2#

这个前缀只需要去掉,去掉它。结果文本解码为“abc”。
我不认为base64:前缀有官方规范,我能想到的最接近的是data:,但那是完全不同的。

相关问题