diff --git a/lib/SimpleSAML/Session.php b/lib/SimpleSAML/Session.php
index bf0b8e0fb0ee1c449610a026d3d473d2d23f3b12..ab0fe845a4bb430bc35736088e882ea7c4c5c14a 100644
--- a/lib/SimpleSAML/Session.php
+++ b/lib/SimpleSAML/Session.php
@@ -147,7 +147,7 @@ class SimpleSAML_Session {
 		$sh = SimpleSAML_SessionHandler::getSessionHandler();
 		$this->sessionId = $sh->newSessionId();
 
-		$this->trackid = substr(md5(uniqid(rand(), true)), 0, 10);
+		$this->trackid = SimpleSAML_Utilities::stringToHex(SimpleSAML_Utilities::generateRandomBytes(5));
 
 		$this->dirty = TRUE;