diff --git a/proto/equal.go b/proto/equal.go
index d4db5a1c..649100f9 100644
--- a/proto/equal.go
+++ b/proto/equal.go
@@ -202,6 +202,15 @@ func equalAny(v1, v2 reflect.Value, prop *Properties) bool {
 			if v1.IsNil() != v2.IsNil() {
 				return false
 			}
+			// Edge case: if field is a cast type of []byte, special conversion
+			// to []byte is required for bytes.Equal.
+			if v1.Type() != reflect.TypeOf([]byte{}) {
+				w1 := reflect.New(reflect.TypeOf([]byte{})).Elem()
+				w2 := reflect.New(reflect.TypeOf([]byte{})).Elem()
+				w1.Set(v1)
+				w2.Set(v2)
+				return bytes.Equal(w1.Interface().([]byte), w2.Interface().([]byte))
+			}
 			return bytes.Equal(v1.Interface().([]byte), v2.Interface().([]byte))
 		}
 
