Rather than just shuffling the bits, you could do a invertible operations, like you'd use in a block cipher. An unbalanced feistel network (24 and 23 bit halves) would be easy to implement, or even just invertible operations like "x=x^rotate(x, 5)".