Die Lösungmit dem Hash wird funktionierne, obwohl Sie noch ein wenig Salt ergänzen sollten, damit man das Verfahren nicht zu einfach umgehen kann:
$hash = hash('crc32b', $participantid.'938rtw7j94ufgqaw390846ztr');
Eine Alternative besteht darin, dass Sie in der "Datenbank für Inhalte" einfach eine Liste mit (zufälligen) Teilnahme-IDs und (zufälligen) Codes hinterlegen.
1234567ABC   213U
234567ABCD   13UX
34567ABCDE   3UX5
Zufalls-Strings können Sie sich z.B. von der Seriennummer-Funktion in SoSci erzeugen lassen, für die Bestätigungscodes können Sie in Excel dann einfach  die ersten z.B. 4 Zeichen (eines anderen Codes, versteht sich) verwenden.
Wenn Sie den Code als REF oder SERIAL im Link übergeben, können Sie m Fragebogen dann über dbGet() den Antwortcode abfragen.
$code = caseSerial();
$info = dbGet($code);
if ($info) {
    $answer = $info[0];
} else {
    $answer = 'invalid participant';
}
html('<h1>'.$answer.'</h1>');