可以使用编码的字符串和字符串发现加密密钥吗?

时间:2011-05-22 15:44:17

标签: php encryption

我正在使用PHP mcrypt_encrypt函数来加密要在URL中发送的ID。例如:/?id=encryptedstring而不是/?id=1;这是为了防止用户猜测下一个序列。

如果加密密钥具有加密字符串和原始值,用户是否可以发现加密密钥?

4 个答案:

答案 0 :(得分:4)

加密不是正确的方式。

如果您担心用户猜测下一个序列,请考虑从一开始就为每条记录提供一个随机的10位或20位ID。

但是,如果您要保护敏感数据,那么依赖不可猜测的网址足够的安全性。 URL可以传递,将存储在浏览器的历史记录中,将在代理和服务器日志中显示等。

在这种情况下,您需要实现一个授权系统,该系统只允许用户访问他们允许访问的记录(例如,通过记录用户),因此他们是否知道序列并不重要。

答案 1 :(得分:1)

当然,这是可能的。他们可以使用暴力攻击并使用加密字符串检查原始已知值的测试加密,并比较每个可能的密钥,直到找到生成相同加密字符串的密钥。

然而,强制执行效率非常低,因此他们不太可能发现您的密钥。

有关暴力攻击者发现密钥需要多长时间的详情,请参阅this site

如果用户没有正确的阅读记录权限,Pekka会提出一个关于拒绝访问的建议,你肯定应该遵循。 "通过默默无闻的安全根本不是安全"。

答案 2 :(得分:1)

如果您真的对此感到担心,可以在加密中添加salt

答案 3 :(得分:0)

通常它需要多于一对清除+加密数据才能破解加密(即导出密钥)。这是因为你使用了一个不错的加密方案,当然