【发布时间】:2016-03-17 21:06:15
【问题描述】:
我有一个 16 字节 md5 哈希,我需要使用 XOR 将其“折叠”成 4 字节数据:{1st 4 bytes} XOR {2nd 4 bytes} XOR {3rd 4 bytes} XOR {4th 4 字节}。然后我需要将结果转换为十六进制形式(8 个字符的字符串)。
我正在像这样生成我的哈希(解码为十六进制,因为它似乎更容易处理):
SELECT decode(md5('test'), 'hex');
但这就是我所得到的。我不知道将 16 字节哈希拆分为 4 个 4 字节值的最佳方法,然后对这些 4 字节值进行异或。
【问题讨论】:
-
@MarcB:我认为这个想法是使用按位异或运算符。但我正在努力解决如何制定这个问题。我目前正在查看this stackoverflow 答案以供参考。但我无法将其转换为我的示例。
-
事实证明,实际问题与 MD5 无关,只是在 Postgres 中异或字节。
-
@zaph 是的,这是正确的。我认为我的问题很清楚。但是,标题有点误导,所以我已经更新了。
-
好吧,
#是 postgress 中的异或运算符,所以从技术上讲,您只需要一些字符串和/或位运算来提取单个字节,然后将它们全部异或。
标签: postgresql cryptography md5 xor