diff --git a/include/opendht/dht.h b/include/opendht/dht.h
index 8d1303db2cce33b757629cc2cfa781e4e970542f..82e7136daa69ebccc33cb521ebf3e22089cc242c 100644
--- a/include/opendht/dht.h
+++ b/include/opendht/dht.h
@@ -348,7 +348,7 @@ private:
 
     static constexpr std::chrono::seconds REANNOUNCE_MARGIN {10};
 
-    static constexpr size_t TOKEN_SIZE {64};
+    static constexpr size_t TOKEN_SIZE {32};
 
     // internal structures
     struct SearchNode;
diff --git a/src/dht.cpp b/src/dht.cpp
index 214419703f1726f7a2447d9b81e3c5f489f4edae..72a29ffd3233a7340b0c27c28832033397b4c759 100644
--- a/src/dht.cpp
+++ b/src/dht.cpp
@@ -2461,8 +2461,8 @@ Dht::makeToken(const sockaddr *sa, bool old) const
     Blob ret {};
     ret.resize(sz);
     gnutls_datum_t gnudata = {data.data(), (unsigned int)data.size()};
-    if (gnutls_fingerprint(GNUTLS_DIG_SHA512, &gnudata, ret.data(), &sz) != GNUTLS_E_SUCCESS)
-        throw DhtException("Can't compute SHA512");
+    if (gnutls_fingerprint(GNUTLS_DIG_SHA256, &gnudata, ret.data(), &sz) != GNUTLS_E_SUCCESS)
+        throw DhtException("Can't compute SHA256");
     ret.resize(sz);
     return ret;
 }