[C++] Implementacja haseł jako losowe klucze prywatne

Problem jest następujący.

Mam 2 urządzenia. Na obu uruchomiony program np. konsolowy. Co 30s mają generować np. 10 znaków, ale na obu programach mają być one takie same.

Nie mogę tu wziąć pod uwagę generowanie klucza na podstawie czasu gdyż to zawodzi. Na pewno któryś z wielkich uczonych znalazł taką metodę. Myślałem na temat klucza prywatnego. Czyli wygenerowanego 20 znakowego ciągu znaków które będą zakodowane w programie, ale nie mogę na nim przeprowadzić tych samych operacji bez ogólnej synchronizacji [Punkt odniesienia jak np. czas który odpada] Ma ktoś jakiś pomysł?

Jeżeli do funkcji srand() jako parametr podasz czas zaokrąglony do najbliższych 30 sek to na 100% to nie zawiedzie:

srand(time(NULL)/30);

no chyba że urządzenia mają rozbieżność zegarów ponad 30 sek, ale w takim razie te hasła co 30 sek też nie na wiele się zdadzą.

Zauważ że np. po srand(666); rand() będzie generować taki sam ciąg liczb losowych.

Więc wystarczy że te urządzenia raz się zsynchronizują podając do swoich srand() taką samą liczbę.