我需要在Go中执行以下操作:
连接 2 个字符串
计算串联字符串(128 位数组)的 MD5 哈希
将 XOR 运算符应用于 MD5 哈希上的 64 LSB 和 64 MSB。
我可以使用“crypto/md5”包计算字符串的MD5哈希,但在实现步骤#3时遇到问题。这是我想出的代码,我认为这是不正确的,并且没有看到任何从字符串中获取MSB和LSB的链接。
func GenerateHashKey(s1 string, s2 string) string {
if s1 == "" {
return ""
}
data := []byte(s1 + s2)
md5sum := md5.Sum(data)
// 0: uint32
lsb := bytes.NewBuffer(md5sum[:9]) // 0-8
msb := bytes.NewBuffer(md5sum[9:]) // 9-16
return msb ^ lsb; //This results in an error
}
这是一个相应的工作Java代码,我需要将其转换为Go。
//input is a concatenated string
byte[] str = input.getBytes("UTF-8");
byte[] md5sum = MessageDigest.getInstance("MD5").digest(str);
long lsb =
ByteBuffer.wrap(md5sum).order(ByteOrder.LITTLE_ENDIAN).getLong(0);
long msb =
ByteBuffer.wrap(md5sum).order(ByteOrder.LITTLE_ENDIAN).getLong(8);
return msb ^ lsb;
慕容森
富国沪深
随时随地看视频慕课网APP
相关分类