Dla wspólnych wartości w, powiązane wartości Qw przedstawiono w zapisie szesnastkowym: Dla w = 16: 0x9E37 Dla w = 32: 0x9E3779B9 Dla w = 64: 0x9E3779B97F4A7C15

# "Rozbijanie" klucza K na słowa # u = w / 8 c = ceiling( max(b, 1) / u ) # L jest początkowo listą o długości c, składającą się z wyrazów o długości w for i = b-1 down to 0 do: L[i/u] = (L[i/u] << 8) + K[i]

# Inicjacja niezależnej od klucza, pseudolosowej tablicy S # S jest początkowo listą o długości t=2(r+1) zawierającą niezdefiniowane słowa o długości w S = P_w for i = 1 to t-1 do: S[i] = S[i-1] + Q_w

# Główna pętla mechanizmu "key scheduling" i = j = 0 A = B = 0 do 3 * max(t, c) times: A = S[i] = (S[i] + A + B) <<< 3 B = L[j] = (L[j] + A + B) <<< (A + B) i = (i + 1) % t j = (j + 1) % c

# return S

W poniższym kodzie używane są następujące wartości zmiennych: w = 32, r = 12, oraz b = 16.

void RC5_SETUP(unsigned char *K) { // w = 32, r = 12, b = 16 // c = max(1, ceil(8 * b/w)) // t = 2 * (r+1) WORD i, j, k, u = w/8, A, B, L[c];

for(i = b-1, L[c-1] = 0; i != -1; i--) L[i/u] = (L[i/u] << 8) + K[i];

for(S = P, i = 1; i < t; i++) S[i] = S[i-1] + Q;

for(A = B = i = j = k = 0; k < 3 * t;