我想混淆我的身份證我webapp。簡單號碼密碼混淆身份證
所以我需要改變 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
,但我還沒有找到我的方式,直到現在。
我以爲這是一個簡單的問題!
感謝
我想混淆我的身份證我webapp。簡單號碼密碼混淆身份證
所以我需要改變 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
,但我還沒有找到我的方式,直到現在。
我以爲這是一個簡單的問題!
感謝
我最後寫這些功能(通過做@ 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
使用任何快速塊加密(AES,甚至老DES)用隨機固定鍵。它不是密碼安全的,但它具有所有期望的屬性。
我正要談論加密和XOR,但也許你真正需要的只是使用隨機ID。這取決於你想要抵禦的是什麼。
ID都在那裏,我不能改變它們。 –
雖然你可以映射它們。作中,生成隨機的ID,並將它們映射到一個簡單的表真實的id: – Niels2000
示例: ID映射 100 5900c7c1bc1c 101 c2ab53a2ff2c 102 0f50b8d3c233 等,然後掩蔽然後走出去,將它們映射在去的Et。瞧! – Niels2000