想象一个值,比如“1234”。我想将该值映射到另一个值,例如“abcd”。约束:
- 目标值的长度等于起始值
- 映射应该是唯一的。例如 1234 应该只映射到 abcd 和 viseversa
- 映射过程应该(非常)难以猜测。例如乘以 2 确实计数
- 映射应该是可逆的
- 起始值是一个整数
- 目标值可以是任何类型
这应该是一个基本算法,最终我会用 Ruby 编写它,但这里无关紧要。
我是按照以下思路思考的:
SECRET = 1234
def to(int)
SECRET + int * 2
end
def fro(int)
(int - SECRET) / 2
end
显然,这违反了约束 1 和 3。
最终目标是匿名化我数据库中的记录。我可能想多了。