我在 SQL-Server 表中有一列,包含如下信息:
数据 |
---|
0x0056794433020000632700C90079058303F2000102EA40C0000000150001000100020001001500010001000136BB0000000000001F50000000100010001000100003135343131313838323230393239393638340000 |
0x0056C944370200007827007200C9058303F2000102EA40BD0000000E003E000200020001000E00010001000136C5020036B1000001F50000000100010001000100003339303038373030333533323331343536310000 |
0x0056C9443102000078AF007100C9058303F2000102EA40BB0000000D0033000500020002000D00010001000136C5020036B1000001F50000000100010001000100003339303038373030333533323338323937330000 |
该信息的写法如下(VB.Net代码):
Dim oPar5 As New SqlParameter("@Data", Convert.ToBase64String(data))
我正在尝试解码它,但是我感觉自己因为对这个主题缺乏了解而被搞得一团糟(例如,ChatGpt 不断将 XML 拖入其中,而这与它无关)。
因此,我决定从基础开始:什么是 Base64 字符串?只有清楚了这一点,我才可能开始尝试将其转换为字节数组(作为测试,第四个字节应始终为“D”、“K”或“Q”,其他值则不可能)。
有人能帮我开始吗?
Base64是 8 位二进制数据的 6 位编码,通常使用字符
a-z A-Z 0-9 / +
(通常=
作为最终填充)。因此,“Base64 字符串”将是包含此类编码数据的纯 ASCII 字符串。表中的字符串不是 Base64;它们的数据以十六进制编码(我假设这只是 SQL 客户端显示的内容,而实际列存储的是非编码的二进制数据)。所以我的猜测是,要么是 VB.Net 代码与数据库不匹配,要么是操作的 SQL 查询端有一些额外的代码,在存储到数据库之前会撤消 Base64 编码(例如
BASE64_DECODE(@Data)
或类似的东西)。同一值的 Base64 编码版本为: