diff --git a/src/condensed.py b/src/condensed.py
--- a/src/condensed.py
+++ b/src/condensed.py
@@ -60,6 +60,9 @@ def reconstruct_raw(*shares):
 
 	:param shares: (((int) i, (bytes) share), ...)
 	:return: (bytes) reconstructed secret. Too few shares returns garbage."""
+	if len({x for (x, _) in shares}) < len(shares):
+		raise SException("Found a non-unique share. Please check your inputs.")
+
 	secret_len = len(shares[0][1])
 	res = [None]*secret_len
 	for i in range(secret_len):
diff --git a/src/shamira.py b/src/shamira.py
--- a/src/shamira.py
+++ b/src/shamira.py
@@ -40,6 +40,9 @@ def reconstruct_raw(*shares):
 
 	:param shares: (((int) i, (bytes) share), ...)
 	:return: (bytes) reconstructed secret. Too few shares return garbage."""
+	if len({x for (x, _) in shares}) < len(shares):
+		raise MalformedShare("Found a non-unique share. Please check your inputs.")
+
 	secret_len = len(shares[0][1])
 	res = [None]*secret_len
 	for i in range(secret_len):