VMPC (ang. Variably Modified Permutation Composition; zmiennie modyfikowane złożenie permutacji) – funkcja oraz algorytm szyfrowania opracowane przez Bartosza Żółtaka i opublikowane przez autora na międzynarodowej konferencji kryptograficznej Fast Software Encryption w 2004 (FSE 2004).

Definicja funkcji VMPC dla n-elementowej permutacji f jest następująca:

Przekształcenie to – mimo prostej budowy – okazuje się trudne do odwrócenia. Symulacje komputerowe pokazują, że znalezienie permutacji f na podstawie permutacji g dla 16-elementowej permutacji zajmuje około 211 operacji (ok. 2000), dla 64-elementowej permutacji – około 253 operacji (ok. 9 biliardów), a dla 256-elementowej permutacji – około 2260 operacji.

Wraz z funkcją VMPC na konferencji FSE 2004 opublikowany został algorytm szyfrowania danych bazujący na funkcji VMPC. Jest to szyfr strumieniowy charakteryzujący się dużą wydajnością w implementacjach programowych. Jego budowa – podobnie jak funkcji VMPC – jest bardzo prosta. Algorytm działania szyfru VMPC pozwalający zaszyfrować L-znakową (bajtową) informację przedstawia się następująco:

1. n = 0 2. Powtarzaj kroki 3-6 L razy: 3. s = P[ (s + P[n]) mod 256 ] 4. Output = P[ (P[P[s]]+1) mod 256 ] 5. Temp = P[n] P[n] = P[s] P[s] = Temp 6.