The function below addresses the perennial programming quandary: “How do I take good data in string form and painlessly turn it into garbage?” This is not a difficult thing to code for oneself, but the authors of the GNU C Library wish to make it as convenient as possible.
To erase data, use explicit_bzero
(see Erasing Sensitive Data); to obfuscate it reversibly, use memfrob
(see Obfuscating Data).
char *
strfry (char *string)
¶Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
strfry
performs an in-place shuffle on string. Each
character is swapped to a position selected at random, within the
portion of the string starting with the character’s original position.
(This is the Fisher-Yates algorithm for unbiased shuffling.)
Calling strfry
will not disturb any of the random number
generators that have global state (see Pseudo-Random Numbers).
The return value of strfry
is always string.
Portability Note: This function is unique to the GNU C Library. It is declared in string.h.