我想在webapp中混淆我的ID。
所以我需要改变
f(id) = hidden_id
易于访问f-1(hidden_id) = id
。
安全性不是什么大问题,但如果f
不明显(如f(x) = ax + b
)那就太好了。实现这一目标的一个好信号是a < b => f(a) < f(b)
不正确。
我的基本知识是加密告诉我,我应该看看像f(x) = x^a % b
这样的东西,但直到现在我还没有找到我的方法。
我认为这是一个简单的问题!
由于
答案 0 :(得分:1)
使用随机固定密钥的任何快速分组密码(AES或甚至旧的DES)。它不具有加密安全性,但它具有所有所需的属性。
答案 1 :(得分:1)
我打算谈论加密和xor,但也许你真正需要的只是使用随机ID。这取决于你是什么,并试图防御。
答案 2 :(得分:0)
我最终编写了这些函数(@ Niels2000建议的XOR技巧)
在Ruby中:
def self.encrypt(id)
# Concat [1] because first number IS a 0 hence information is lost
([1] + id.to_s(2).split('').reverse.map{ |b| 1 - b.to_i}).join('').to_i(2)
end
def self.decrypt(encrypted_id)
# Remove the [1]
(encrypted_id.to_s(2).split('').map{ |b| 1 - b.to_i}).join('')[1..-1].reverse.to_i(2)
end