diff --git a/VectoCommon/VectoHashing/VectoHash.cs b/VectoCommon/VectoHashing/VectoHash.cs
index c559c7b0c23fed888135d9cad067e4ecc5a7352d..ac1a362332b1eeaf3f22759e2a2582fbcfdb6154 100644
--- a/VectoCommon/VectoHashing/VectoHash.cs
+++ b/VectoCommon/VectoHashing/VectoHash.cs
@@ -168,8 +168,10 @@ namespace TUGraz.VectoHashing
 				throw new Exception(string.Format("index exceeds number of components found! index: {0}, #components: {1}", index,
 					nodes.Count));
 			}
-			var componentId = nodes[index].Attributes[XMLNames.Component_ID_Attr].Value;
-			return GetHashValueFromSig(DoComputeHash(nodes[index], canonicalization, digestMethod), componentId);
+
+			var sortedNodes = SortComponentNodes(component, nodes);
+			var componentId = sortedNodes[index].Attributes[XMLNames.Component_ID_Attr].Value ?? "";
+			return GetHashValueFromSig(DoComputeHash(sortedNodes[index], canonicalization, digestMethod), componentId);
 		}
 
 		private static XmlDocument DoComputeHash(XmlNode dataNode, IEnumerable<string> canonicalization, string digestMethod)
@@ -381,7 +383,7 @@ namespace TUGraz.VectoHashing
 			return ReadHashValue(nodes[index]);
 		}
 
-		private XmlNodeList GetNodes(VectoComponents? component, int index)
+		private XmlNode[] GetNodes(VectoComponents? component, int index)
 		{
 			var nodes = Document.SelectNodes(GetComponentQueryString(component));
 			if (nodes == null || nodes.Count == 0) {
@@ -393,7 +395,17 @@ namespace TUGraz.VectoHashing
 				throw new Exception(string.Format("index exceeds number of components found! index: {0}, #components: {1}", index,
 					nodes.Count));
 			}
-			return nodes;
+
+			return SortComponentNodes(component, nodes);
+		}
+
+		private XmlNode[] SortComponentNodes(VectoComponents? component, XmlNodeList nodes)
+		{
+            if (component != null && component == VectoComponents.Tyre) {
+                return nodes.Cast<XmlNode>()
+                    .OrderBy(x => x.SelectSingleNode("./ancestor-or-self::*[@axleNumber]/@axleNumber")?.Value.ToInt() ?? 0).ToArray();
+            }
+            return nodes.Cast<XmlNode>().ToArray();
 		}