Wielokrotnie szyfruj (losowe wypełnianie + const int32) - tajny kompromis?

Czy jakikolwiek schemat szyfrowania pozwoli mi bezpiecznie wielokrotnie szyfrować tę samą liczbę całkowitą, za każdym razem dołączając różne losowe materiały? Wygląda na to, że taka operacja może doprowadzić mnie do gorącej wody.

Chcę uniemożliwić podglądanie elementów w mojej aplikacji internetowej, ale wciąż mam trwałe identyfikatory przedmiotów / adresy URL, aby linki treści nie wygasały z czasem. Moje wymagania bezpieczeństwa nie są zbyt wysokie, ale wolałbym nie robić czegoś całkowicie kretyńskiego, co oczywiście zagraża tajemnicy.

// performed on each ID before transmitting item search results to the client
public int64 encryptWithRandomPadding(int32 id) {
    int32 randomPadding = getNextRandomInt32();
    return encrypt(((int64)randomPadding << 32) + id), SECRET);
}

// performed on an encrypted/padded ID for which the client requests details
public int32 decryptAndRemoveRandomPadding(int64 idToDecrypt) {
    int64 idWithPadding = decrypt(idToDecrypt, SECRET);
    return (int32)idWithPadding;
}

static readonly string SECRET = "thesecret";

Wygenerowane identyfikatory / adresy URL są trwałe, zaszyfrowane identyfikatory są słabo wypełnione (mniej niż 1 w uint32.Max jest unikalnych i mogę dodać kolejne stałe wypełnienie, aby zmniejszyć prawdopodobieństwo zgadnięcia), a klient może uruchomić to samo wyszukiwanie i uzyskaj te same wyniki za każdym razem z różnymi reprezentatywnymi identyfikatorami. Myślę, że spełnia moje wymagania, chyba że istnieje rażący problem kryptograficzny.

Przykład:

 encrypt(rndA + item1)   -> tokenA
 encrypt(rndB + item1)   -> tokenB
 encrypt(rndC + item2)   -> tokenC
 encrypt(rndD + item175) -> tokenD

Tutaj nie ma sposobu na stwierdzenie, że zarówno tokenA, jak i tokenB wskazują na identyczne elementy; Zapobiega to usuwaniu duplikatów wyników wyszukiwania przez pająka bez ich pobierania (podczas pobierania zwiększa licznik użycia). Ponadto pozycja 2 może nie istnieć.

Wiedząc, że ponowne uruchomienie wyszukiwania zwróci ten sam int32 dopełniony na wiele sposobów tym samym sekretem,czy mogę to zrobić bezpiecznie za pomocą popularnych algorytmów kryptograficznych? Dzięki, ekspertom od kryptografii!

uwaga: jest to kontynuacja pytania, które nie wyszło tak, jak się spodziewałem:Szyfruj liczbę całkowitą tajną i wspólną solą