Use random.shuffle with the key as a seed:
import random def rearrange(key, data): random.seed(key) d = list(data) random.shuffle(d) return ''.join(d) def restore(key, rearranged_data): l = len(rearranged_data) random.seed(key) d = range(l) random.shuffle(d) s = [None] * l for i in range(l): s[d[i]] = rearranged_data[i] return ''.join(s) x = rearrange(42, 'Hello, world!') print x print restore(42, x)
Conclusion:
oelwrd!, llHo Hello, world!
source share