我正在尋找一個將整數映射到整數的加密函數(所以,1:1映射)。Integer Encryption
例如,假設我有N1
(整數)和password
。我使用加密函數來獲得整數N2
。然後,如果(並且只有)我知道密碼,我應該能夠從N2
找回N1
。
什麼是最好的功能呢?
我正在尋找一個將整數映射到整數的加密函數(所以,1:1映射)。Integer Encryption
例如,假設我有N1
(整數)和password
。我使用加密函數來獲得整數N2
。然後,如果(並且只有)我知道密碼,我應該能夠從N2
找回N1
。
什麼是最好的功能呢?
看看format preserving encryption我認爲這是你在找什麼。例如,您可以使用Feistel網絡和AES來加密整數並獲得加密整數。有很多加密信用卡號碼的例子保留其格式。
答案很好,但據我所知,用這種方法對信用卡號碼進行加密是個不錯的主意。只是爲了節省一些字節,你放棄了一個IV矢量,在我看來這是必須的。 – martinstoeckli
這是保存加密的格式,因此您可以使用_encrypted_信用卡,但格式相同。有時當你無法存儲更多信息時,你無法做得更好。 –
我在wiki頁面上發表評論,問題是,信用卡號碼太短,您可以輕鬆構建一個彩虹表來一次全部破解(給定的數字總是返回相同的加密數字)。即使是具有IV矢量的塊密碼也會傾向於暴力破解。所以最好不要存儲數字,或者至少用IV矢量來完成。 – martinstoeckli
最有可能的是過多的這樣的功能,很難說哪一個在你的情況下是「最好的」。人們需要更多細節來判斷。 –
您的問題意味着您正在尋找只有一個密鑰而不是公鑰和私鑰的密鑰對的同時加密算法。儘管對稱加密中的密鑰是保密的,在某種意義上它與「私人」有些類似,但這是一個區別:密鑰對的私鑰甚至不能在雙方之間共享。這是一個單一的私人,因此是一個私人的密鑰。因此,在至少兩方之間共享的一個共同加密中的密鑰不稱爲私鑰。 –
哈希也意味着其他一些東西:密碼學中的哈希通常是以某種方式做出來的,所以不可能扭轉它,或者只是付出巨大的努力。該術語不用於加密的數據,如果知道正確的密鑰,可以很容易地解密該數據。 –