2013-08-20 39 views
1

我正在寻找一个将整数映射到整数的加密函数(所以,1:1映射)。Integer Encryption

例如,假设我有N1(整数)和password。我使用加密函数来获得整数N2。然后,如果(并且只有)我知道密码,我应该能够从N2找回N1

什么是最好的功能呢?

+1

最有可能的是过多的这样的功能,很难说哪一个在你的情况下是“最好的”。人们需要更多细节来判断。 –

+0

您的问题意味着您正在寻找只有一个密钥而不是公钥和私钥的密钥对的同时加密算法。尽管对称加密中的密钥是保密的,在某种意义上它与“私人”有些类似,但这是一个区别:密钥对的私钥甚至不能在双方之间共享。这是一个单一的私人,因此是一个私人的密钥。因此,在至少两方之间共享的一个共同加密中的密钥不称为私钥。 –

+1

哈希也意味着其他一些东西:密码学中的哈希通常是以某种方式做出来的,所以不可能扭转它,或者只是付出巨大的努力。该术语不用于加密的数据,如果知道正确的密钥,可以很容易地解密该数据。 –

回答

2

看看format preserving encryption我认为这是你在找什么。例如,您可以使用Feistel网络和AES来加密整数并获得加密整数。有很多加密信用卡号码的例子保留其格式。

+0

答案很好,但据我所知,用这种方法对信用卡号码进行加密是个不错的主意。只是为了节省一些字节,你放弃了一个IV矢量,在我看来这是必须的。 – martinstoeckli

+0

这是保存加密的格式,因此您可以使用_encrypted_信用卡,但格式相同。有时当你无法存储更多信息时,你无法做得更好。 –

+0

我在wiki页面上发表评论,问题是,信用卡号码太短,您可以轻松构建一个彩虹表来一次全部破解(给定的数字总是返回相同的加密数字)。即使是具有IV矢量的块密码也会倾向于暴力破解。所以最好不要存储数字,或者至少用IV矢量来完成。 – martinstoeckli