Symmetric Bijective Algorithm for Integers

后端 未结 11 846
甜味超标
甜味超标 2020-12-01 03:33

I need an algorithm that can do a one-to-one mapping (ie. no collision) of a 32-bit signed integer onto another 32-bit signed integer.

My real concern is enough entr

11条回答
  •  無奈伤痛
    2020-12-01 04:13

    Use any 32-bit block cipher! By definition, a block cipher maps every possible input value in its range to a unique output value, in a reversible fashion, and by design, it's difficult to determine what any given value will map to without the key. Simply pick a key, keep it secret if security or obscurity is important, and use the cipher as your transformation.

    For an extension of this idea to non-power-of-2 ranges, see my post on Secure Permutations with Block Ciphers.

    Addressing your specific concerns:

    1. The algorithm is indeed symmetric. I'm not sure what you mean by "reverse the operation without a keypair". If you don't want to use a key, hardcode a randomly generated one and consider it part of the algorithm.
    2. Yup - by definition, a block cipher is bijective.
    3. Yup. It wouldn't be a good cipher if that were not the case.

提交回复
热议问题