func Xor(left, right []byte) []byte {
	result := make([]byte, len(left))

	for i := 0; i < len(left); i++ {
		result[i] = left[i] ^ right[i]
	}

	return result
}
func Xor(left, right []byte) []byte {
	result := make([]byte, len(left))

	for i := 0; i < len(left); i++ {
		result[i] = left[i] ^ right[i]
	}

	return result
}
// Xor is doing byte by byte exclusive or of 2 byte arrays