在 PHP 和 JavaScript 中加盐的 MD5
MD5 with salt in PHP and JavaScript
我需要在 php 和 javascript 中使用一种通用的散列方法,比如 MD5 或者如果不是 MD5 则使用盐,但要从 php 和生成相同的结果javascript.
我想做的是,我有一系列问题要问用户,用户必须回答这些问题,但为了加快速度并避免延迟从服务器检查用户答案,我也想加载带有问题的答案并在 javascript 中匹配它们作为用户回答它们。现在我需要从 php 服务器获取散列的答案,当我将它们与用户答案匹配时,我将散列用户答案并将其与来自服务器的散列答案相匹配。
可能吗?
这只不过是在混淆你的所作所为。大概你想防止用户作弊。这样做并依赖客户端代码将无法安全工作。
当客户端浏览器收到答案哈希值和相应的盐分时,用户可以简单地暴力破解正确的答案。可能答案的数量是如此之少,以至于用户可以用收到的盐尝试每一个可能的答案,并通过比较哈希值找到匹配的答案。
既然这不过是混淆视听,何必搞复杂呢?只需使用 Base 64 或类似的东西对您的正确答案进行编码。这将防止大多数用户作弊。如果你真的想确保没有用户可以作弊,你需要将选择的答案发送到服务器。
如果您真的想继续您的计划,目前 JavaScript 最快的 MD5 哈希器是 SparkMD5, not that you need the speed for your use case. CryptoJS also implements MD5 and PHP has the md5()
函数。所有这些实现都是兼容的。您只需确保使用相同的编码(字符编码和 Hex/Base64)。
带有盐的结构可能是 md5(answer || salt)
,其中 ||
表示串联。这不是真正的节省,但无论如何对你来说并不重要。
我需要在 php 和 javascript 中使用一种通用的散列方法,比如 MD5 或者如果不是 MD5 则使用盐,但要从 php 和生成相同的结果javascript.
我想做的是,我有一系列问题要问用户,用户必须回答这些问题,但为了加快速度并避免延迟从服务器检查用户答案,我也想加载带有问题的答案并在 javascript 中匹配它们作为用户回答它们。现在我需要从 php 服务器获取散列的答案,当我将它们与用户答案匹配时,我将散列用户答案并将其与来自服务器的散列答案相匹配。
可能吗?
这只不过是在混淆你的所作所为。大概你想防止用户作弊。这样做并依赖客户端代码将无法安全工作。
当客户端浏览器收到答案哈希值和相应的盐分时,用户可以简单地暴力破解正确的答案。可能答案的数量是如此之少,以至于用户可以用收到的盐尝试每一个可能的答案,并通过比较哈希值找到匹配的答案。
既然这不过是混淆视听,何必搞复杂呢?只需使用 Base 64 或类似的东西对您的正确答案进行编码。这将防止大多数用户作弊。如果你真的想确保没有用户可以作弊,你需要将选择的答案发送到服务器。
如果您真的想继续您的计划,目前 JavaScript 最快的 MD5 哈希器是 SparkMD5, not that you need the speed for your use case. CryptoJS also implements MD5 and PHP has the md5()
函数。所有这些实现都是兼容的。您只需确保使用相同的编码(字符编码和 Hex/Base64)。
带有盐的结构可能是 md5(answer || salt)
,其中 ||
表示串联。这不是真正的节省,但无论如何对你来说并不重要。