diff --git a/src/qobuz/qobuzstreamurlrequest.cpp b/src/qobuz/qobuzstreamurlrequest.cpp
index 5fd693f84..752f58850 100644
--- a/src/qobuz/qobuzstreamurlrequest.cpp
+++ b/src/qobuz/qobuzstreamurlrequest.cpp
@@ -110,6 +110,14 @@ void QobuzStreamURLRequest::GetStreamURL() {
     reply_->deleteLater();
   }
 
+  QByteArray appid = app_id().toUtf8();
+  QByteArray secret_decoded = QByteArray::fromBase64(app_secret().toUtf8());
+  QString secret;
+  for (int x = 0, y = 0; x < secret_decoded.length(); ++x , ++y) {
+    if (y == appid.length()) y = 0;
+    secret.append(QChar(secret_decoded[x] ^ appid[y]));
+  }
+
   quint64 timestamp = QDateTime::currentDateTime().toTime_t();
 
   ParamList params_to_sign = ParamList() << Param("format_id", QString::number(format()))
@@ -123,7 +131,7 @@ void QobuzStreamURLRequest::GetStreamURL() {
     data_to_sign += param.first + param.second;
   }
   data_to_sign += QString::number(timestamp);
-  data_to_sign += app_secret();
+  data_to_sign += secret.toUtf8();
 
   QByteArray const digest = QCryptographicHash::hash(data_to_sign.toUtf8(), QCryptographicHash::Md5);
   QString signature = QString::fromLatin1(digest.toHex()).rightJustified(32, '0').toLower();