如何用salt / password将整数加密到另一个整数?

时间:2015-12-24 06:46:34

标签: php encryption

我正在尝试通过将整数加密到另一个整数来隐藏数据库自动递增的ID(1到PHP_INT_MAX),使其看起来是随机的。

我考虑过做XOR

$mySecretNumber = 123456789;
$idToHide = 10;
$encryptedId = ($idToHide ^ $mySecretNumber);

但是(我认为)秘密号码很容易理解。

如何使用更安全的方法来指定盐/密码?

修改

要清楚,我需要(看似随机地)将1到PHP_INT_MAX范围内的整数映射到同一范围内的另一个整数。

3 个答案:

答案 0 :(得分:1)

您是否试图对ID号进行模糊处理,例如用于URL?的 Encryption is the wrong tool for the "URL paremeter obfsucation" job

使用单独的随机值并维护服务器端查找“随机值”< - >“整数”而不是加密。

除非你是一位多年来打破加密软件的加密工程师(大多数人都不会在Stack Overflow上问这些问题),否则你应该避免像瘟疫那样实施加密技术。在你学到足够的知识之前,你几乎肯定会编写易受攻击的代码。

另请参阅:Write crypto code! Don't publish it!

答案 1 :(得分:0)

我通过使用TEA加密算法(64位分组密码)解决了这个问题。

请注意,范围不是从1到PHP_INT_MAX,而是从PHP_INT_MIN到PHP_INT_MAX(对于64位PHP)。

如果您认为我的方法有任何错误/不好,请告诉我。

另外,我发现了2个非常有用的主题: Obfuscating an IDSymmetric Bijective Algorithm for Integers

修改

我选择TEA算法只是因为它简单快速,安全性不是一个重要的优先事项。

答案 2 :(得分:0)

ECB模式下的任何对称加密都可以,只要块大小为64位且密钥大小足够大,例如TDES为112或AES为128,但结果范围为全64位。但TEA被认为是弱的,因此不合适。