用于混淆ID的简单数字密码

时间:2015-09-03 09:48:15

标签: encryption

我想在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这样的东西,但直到现在我还没有找到我的方法。

我认为这是一个简单的问题!

由于

3 个答案:

答案 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